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檢測單個任務規則的應用情況, 檢測耦合。
SonarQube架構
SonarQube框架包含以下四個部分: 1)Project 2)SonarQube Scanner 3)SonarQube Server 4)SonarQube DatabaseProject
是需要被分析的源碼,如我們的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 Engines5、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個最常用的指標
計算代碼行數可能是最簡單的衡量指標,主要體現了軟件的規模,并為項目增長和規劃提供了相關數據。
要想實現更好的測試以及更高的可維護性,bug跟蹤是必不可少的。每個代碼段、模塊或時間段(天、周、月等)內的bug可以很容易通過工具統計出來(如Mantis)。這樣,可以及早發現并及時修復。
在單元測試階段,代碼覆蓋率常常被拿來作為衡量測試好壞的指標,也用來考核測試任務完成情況。
軟件開發中有很多設計約束和原則,其中包括:
1) 類/方法的長度
2) 一個類中方法/屬性的個數
3) 方法/構造函數參數的個數
4) 代碼文件中魔術數字、字符串的使用(魔術數字指直接寫在代碼中的具體數值,其他人難以理解數字的意義)
5) 注釋行比例等
代碼的可維護性和可讀性是很重要的,開發團隊可以選擇以上這些原則中的一個或全部,并通過一些自動化工具(如maven pmd插件)來遵循這些原則,這將大大提高軟件產品的質量。
圈復雜度是用來衡量一個模塊判定結構的復雜程度,已經成為評估軟件質量的一個重要標準,能幫助開發者識別難于測試和維護的模塊,在成本、進度和性能之間尋求平衡。圈復雜度可以使用pmd工具來自動化計算。
總結
以上是生活随笔為你收集整理的Jenkins+SonarQube6.5.5+SonarScanner2.5代码质量管理平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器集群技术(备份服务器方案和均摊工作
- 下一篇: Linux常用命令——useradd,u