1. 程式人生 > >SonarQube與Jenkins結合提高程式碼質量

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