SonarQube + Maven分析代碼質量
1.1. sonarqube簡介
SonarQube是個開源的代碼質量管理平臺,可以通過多種工具和維度對代碼質量進行分析,部分功能還支持可視化,對於代碼缺陷一目瞭然。SonarQube比較開放,支持通過插件擴展功能。支持衆多計算機語言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。由於我們的項目java語言,使用maven構建,接下來僅介紹sonarqube與maven構建集成進行代碼質量掃描。
1.2. 安裝配置sonarqube
Docker鏡像安裝(sonarqube+mysql),步驟省略
1.3. 與Maven集成
${MAVEN_HOME}/conf/settings.xml 配置如下:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://192.168.3.74:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
執行命令:mvn sonar:sonar -Dsonar.login=5734cc6f6d33232a5d7c45453aa01d70b0427015
使用sonarqube的token執行
首先,執行命令
mvn sonar:sonar -Dsonar.login=5734cc6f6d33232a5d7c45453aa01d70b0427015 ,如果日誌輸出”BUILD SUCCESS“說明已經構建成功。在瀏覽器查看分析結果。
1.4. 查看分析結果
在瀏覽器訪問:http://192.168.3.74:9000,賬號登錄進入。
1.4.1. home頁
下面是home頁,右邊PROJECTS頁面列出了所有的工程。點擊項目鏈接,可以查看項目詳細情況。
1.4.2. 項目質量信息
包含了很多信息,比如質量閾、bugs、漏洞、壞味道、單元測試覆蓋率、重複度、註釋量等。
質量閾:列出不達標的項,如漏洞、bugs、單元測試覆蓋率、新代碼重複度
新增bug或漏洞:相對於上次分析結果後新增的問題
債務:從提交日起到現在未解決的時間
新債務:從第一次分析開始到現在未解決的時間
代碼覆蓋率:在做單元測試時,代碼覆蓋率常常被拿來作爲衡量測試好壞的指標,比如,代碼覆蓋率必須達到80%或 90%
註釋量:具體項目-指標-大小-註釋
http://192.168.3.74:9000/component_measures?id=com.navinfo%3Acsu-parent&metric=comment_lines_density
1.4.3. 具體問題分析
點擊“問題”,打開問題視圖頁。通過點擊問題數,如下紅框所示,列出問題明細,包括問題嚴重級別,對應的問題數量,問題的描述
1.4.4. 問題解決結果
解決結果:確認、解決、誤判、不修復。
SonarQube允許管理員對問題進行重新確認。
1.4.5. 自定義規則
質量配置是在分析時使用的規則集合,每個語言都有默認配置。沒有指定其他配置的項目會使用默認配置。
sonarqube很多自帶的規則對項目有些影響,部分規則不需要啓用。sonarqube不允許修改默認的最優配置,我們先複製出來再修改。
不需啓用的規則,點擊“掛起”
修改項目質量配置規則:項目-配置-質量配置,選擇自定義的規則
1.5. IDEA集成SonarLint
SonarLint 是一個插件,可以集成到開發工具裏,當打開java文件時可自動分析靜態文件,也可以手動對整個項目做分析;可連接到SonarQube同步分析規則、質量規則與自定義設置;
接下來就說明下IDEA如何集成
1、配置maven
${MAVEN_HOME}/conf/settings.xml 配置如下:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://192.168.3.74:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
2、安裝插件sonarLint
3、配置SonarQube servers
如果勾選 Automatically tigger analysis ,將會自動對打開的文件進行分析
4、綁定上一步驟創建的,以及選擇項目對應的SonarQube的項目
5、執行命令 ,即可將項目進行分析,以及將分析的結果同步到SonarQube平臺上
mvn sonar:sonar -Dsonar.login=5734cc6f6d33232a5d7c45453aa01d70b0427015