日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jenkins+SonarQube6.5.5+SonarScanner2.5代码质量管理平台

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jenkins+SonarQube6.5.5+SonarScanner2.5代码质量管理平台 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Jenkins+SonarQube6.5.5+SonarScanner2.5代碼質量管理平臺

簡介

Sonar是一個用于代碼質量管理的開源平臺,用于管理Java源代碼的質量。通過插件機制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通過不同的插件對這些結果進行再加工處理,通過量化的方式度量代碼質量的變化,從而可以方便地對不同規模和種類的工程進行代碼質量管理。

為神馬要分析我的代碼

對代碼質量關注時,安排人工進行code review是需要的,但100%的code review卻需要投入人員,消耗大量的工作量,而工具自動檢查只需少量人工配置。
最主要的原因就是提高代碼質量,了解RD在編碼過程中犯過的錯誤可能對功能邏輯產生的影響,同時也推動RD讓自己的代碼更具有可讀性和維護性,所以我們借鑒持續改進的流程,希望能夠在這個過程中有所收獲

SonarQube能干什么?

SonarQube 在進行代碼質量管理時,會從圖 1 所示的七個緯度來分析項目的質量。

  • 不遵循代碼標準
    sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規范代碼編寫。
  • 潛在的缺陷
    sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。
  • 糟糕的復雜度分布
    文件、類、方法等,如果復雜度過高將難以改變,這會使得開發人員 難以理解它們, 且如果沒有自動化的單元測試,對于程序中的任何組件的改變都將可能導致需要全面的回歸測試。
  • 重復
    顯然程序中包含大量復制粘貼的代碼是質量低下的,sonar可以展示 源碼中重復嚴重的地方。
  • 注釋不足或者過多
    沒有注釋將使代碼可讀性變差,特別是當不可避免地出現人員變動 時,程序的可讀性將大幅下降 而過多的注釋又會使得開發人員將精力過多地花費在閱讀注釋上,亦違背初衷。
  • 缺乏單元測試
    sonar可以很方便地統計并展示單元測試覆蓋率。
  • 糟糕的設計
    通過sonar可以找出循環,展示包與包、類與類之間的相互依賴關系,可以檢測自定義的架構規則 通過sonar可以管理第三方的jar包,可以利用LCOM4檢測單個任務規則的應用情況, 檢測耦合。
  • 每一個issue分為五個嚴重性等級:1)BLOCKER有相當高的概率會導致應用產生十分嚴重的行為后果,如memory leak, unclosed JDBC connection, .... 這部分代碼必須緊急fix.2)CRITICAL在實際應用中可能會出現低概率的偶現性行為缺陷,也或許存在安全漏洞,如: empty catch block, SQL injection, ... 該部分代碼必須立刻進行review. 3)MAJOR開發人員的代碼質量缺陷,如: uncovered piece of code, duplicated blocks, unused parameters, ...4)MINOR編碼規范: lines should not be too long, "switch" statements should have at least 3 cases, ...5)INFONeither a bug nor a quality flaw, just a finding.

    SonarQube架構

    SonarQube框架包含以下四個部分: 1)Project 2)SonarQube Scanner 3)SonarQube Server 4)SonarQube Database

    Project
    是需要被分析的源碼,如我們的app工程源碼,SonarQube支持多種語言和多種工程結構,Andriod是屬于一種多模塊的Java工程。

    SonarQube Scanner
    是用于執行代碼分析的工具,在Project的根目錄下執行,我們還需要在Project下進行SonarQube配置,其中指定了工程的相關信息,還指定了SonarQube Server的地址,SonarQube Scanner分析完畢之后,會將結果上報到該Server。

    SonarQube Server
    顯示分析結果的Web Server,在SonarQube Scanner第一次將一個工程的分析結果上報給SonarQube Server后,Server上會自動創建一個工程顯示分析的結果,可以在Server上設置代碼質量管理相關的各種配置,如設置代碼檢查規則(Rule)和質量門限(Quality Gate)等。

    工作原理

    遠程客戶機可以通過各種不同的分析機制,從而將被分析的項目代碼上傳到 SonarQube server 并進行代碼質量的管理和分析,SonarQube 實際上是一個Web系統,通過 Web API 將分析的結果以可視化、可度量的方式展示代碼掃描結果,結果是可以自定義的,而真正實現代碼掃描的是Sonar Scanner這個工具
    SonarQube 并不是簡單地將各種質量檢測工具的結果(例如 FindBugs,PMD 等)直接展現給客戶,而是通過不同的插件算法來對這些結果進行再加工,最終以量化的方式來衡量代碼質量,從而方便地對不同規模和種類的工程進行相應的代碼質量管理。

    SonarQube 可以支持 25+ 種編程語言,針對不同的編程語言其所提供的分析方式也有所不同:
    對于所有支持的編程語言,SonarQube 都提供源了代碼的靜態分析功能;
    對于某些特定的編程語言,SonarQube 提供了對編譯后代碼的靜態分析功能,比如 java 中的 class file 和 jar 和 C# 中的 dll file 等;
    對于某些特定的編程語言,SonarQube 還可以提供對于代碼的動態分析功能,比如 java 和 C# 中的單元測試的執行等。

    集成之路

    1、下載并安裝Sonar、SonarScanner
    2、下載并安裝DB(推薦MySQL)
    3、配置sonar.properties、sonar-scanner.properties
    http://wiki.inwaimai.baidu.com/download/attachments/9563635/1.png?version=1&modificationDate=1500005898178&api=v2

    http://wiki.inwaimai.baidu.com/download/attachments/9563635/2.png?version=1&modificationDate=1500005899625&api=v2

    4、jenkins安裝Sonar plugin

    Sonar支持以下幾種方式進行代碼檢查: 1、Analyzing with SonarQube Runner (recommended analyzer) 2、Analyzing with SonarQube Ant Task 3、Analyzing with Maven 4、Analyzing with Gradle 5、CI Engines

    5、Jenkins下面配置Sonar和SonarRunner

    http://wiki.inwaimai.baidu.com/download/attachments/9563635/3.jpg?version=1&modificationDate=1500006054554&api=v2

    http://wiki.inwaimai.baidu.com/download/attachments/9563635/4.png?version=1&modificationDate=1500005899895&api=v2

    http://wiki.inwaimai.baidu.com/download/attachments/9563635/5.png?version=1&modificationDate=1500005900463&api=v2

    6、jenkins中配置需要做代碼掃描的項目

    衡量軟件質量的5個最常用的指標

  • SLOC(Source Lines of Code,源代碼行)
    計算代碼行數可能是最簡單的衡量指標,主要體現了軟件的規模,并為項目增長和規劃提供了相關數據。
  • 每個代碼段/模塊/時間段中的bug數
    要想實現更好的測試以及更高的可維護性,bug跟蹤是必不可少的。每個代碼段、模塊或時間段(天、周、月等)內的bug可以很容易通過工具統計出來(如Mantis)。這樣,可以及早發現并及時修復。
  • 代碼覆蓋率
    在單元測試階段,代碼覆蓋率常常被拿來作為衡量測試好壞的指標,也用來考核測試任務完成情況。
  • 設計/開發約束
    軟件開發中有很多設計約束和原則,其中包括:
  • 1) 類/方法的長度
    2) 一個類中方法/屬性的個數
    3) 方法/構造函數參數的個數
    4) 代碼文件中魔術數字、字符串的使用(魔術數字指直接寫在代碼中的具體數值,其他人難以理解數字的意義)
    5) 注釋行比例等
    代碼的可維護性和可讀性是很重要的,開發團隊可以選擇以上這些原則中的一個或全部,并通過一些自動化工具(如maven pmd插件)來遵循這些原則,這將大大提高軟件產品的質量。

  • 圈復雜度(Cyclomatic Complexity)
    圈復雜度是用來衡量一個模塊判定結構的復雜程度,已經成為評估軟件質量的一個重要標準,能幫助開發者識別難于測試和維護的模塊,在成本、進度和性能之間尋求平衡。圈復雜度可以使用pmd工具來自動化計算。
  • 總結

    以上是生活随笔為你收集整理的Jenkins+SonarQube6.5.5+SonarScanner2.5代码质量管理平台的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。