SonarQube與Jenkins結合提高程式碼質量
首先,為什麼需要SonarQube?
1、WriteClean Code
1)全域性健康報告 2)關注新增的問題 3)強制QualityGate 4)Issue詳情及建議… 詳情參考:https://www.sonarqube.org/features/clean-code/
2、DevOps Integration
1)支援多種BuildSystem整合: Maven,Gradle,Ant… 2)支援多種CIEngines: Bamboo,Jenkins… 3)成功、失敗通知… 詳情參考:https://www.sonarqube.org/features/integration/
3、CentralizeQuality 1)所有專案inone place 2)統一的Ruleset, QualityGate… 詳情參考:https://www.sonarqube.org/features/centralization/
SonarCube安裝
2、 解壓,配置(主要是資料庫的配置)
3、 啟動相應平臺的指令碼
./sonar start
4、驗證(首次啟動PROJECTS下面是空白的)
SonarCubeScanner
用於程式碼分析,有多種方式:
SonarQube Scanner :命令列方式
SonarQubeScanner for Maven :與Maven整合
SonarQube Scannerfor Jenkins:與Jenkins整合
….
詳情參考:https://docs.sonarqube.org/display/SCAN/Analyzing+Source+Code
SonarCubeScanner 命令列方式
命令列模式具體參考: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
SonarCubeScanner Maven方式
1、Initial Setup 修改setting.xml檔案,指定SonarCube Server的URL,其位於$MAVEN_HOME/conf 或 ~/.m2Maven
2、在專案目錄下執行以下命令執行分析 mvn clean verify sonar:sonar
詳情參考:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven
3、檢視報告
SonarCubeScanner Jenkins整合
1. 安裝外掛 (SonarQube Scanner for Jenkins + Quality Gate Plugin) Jenkins: 系統管理 > 管理外掛
2、配置
Jenkins:系統管理 >系統設定
3、專案配置(在原配置上需要增加的地方)
1)在構建環境裡勾選“PrepareSonarQubeScanner environment”
2)在構建裡增加程式碼分析步驟
3)在構建後操作裡增加Quality Gate步驟。這個很關鍵,用於當代碼質量不通過時,不執行部署。ProjectKey可以在SonarQube上找到,執行一次Maven方式的分析後SonarQube就會有。
4. 執行構建
如果程式碼質量通過,專案就可以部署,結果如下。
如果程式碼質量不通過,可以看到後面的部署沒有進行,本次整合狀態為失敗。
5、 檢視失敗原因
點選紅色”ERROR”可以前往SonarQube檢視報告。
點選”NewBugs”下面的數字檢視Bug詳情。
檢視Bug概述
檢視Bug詳情
點選“…”檢視為什麼這是個Bug以及如何fix。
6、Bug處理
管理員可以把Bug分配給開發成員;也可確認這不是Bug後將其設為”won’tfix”,這樣下次構建時這個Bug就不會出現在報告裡,也不會再對QualityGate產生影響。還可以進行其他的一些處理,詳情如下。
若Bug被分配給某個開發成員,他可以在他的賬號下看到。(不知道這個能不能和JIRA整合:))
SonarCube還有很多其他功能,例如Quality Gate狀態變化郵件通知,自定義Rule…這些有需要的話可以進一步深挖下。
SonarLint
使用Sonarlint Eclipse外掛,對新增或修改的程式碼進行即時檢查,降低Issue進入到Jenkins整合的時候才被發現的機率
Sonarlint Eclipse外掛下載和安裝
https://marketplace.eclipse.org/content/sonarlint