基於SonarQube代碼質量檢查工具總結

做者 陳彩華
文章轉載交流請聯繫 caison@aliyun.com
複製代碼

最近公司引入了代碼自動檢查平臺,技術選型是選擇SonarQube,總結以下:前端

1 概述

SonarQube(sonar)是一個開源平臺,用於管理源代碼的質量。 SonarQube不僅是一個質量數據報告工具,更是代碼質量管理平臺。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種編程語言的代碼質量管理與檢測。 SonarQube能夠從如下七個維度檢測代碼質量,而做爲開發人員至少須要處理前5種代碼質量問題。java

  • (1) 不遵循代碼標準 SonarQube能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫。
  • (2) 潛在的缺陷 SonarQube能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。
  • (3) 糟糕的複雜度分佈 文件、類、方法等,若是複雜度太高將難以改變,這會使得開發人員 難以理解它們, 且若是沒有自動化的單元測試,對於程序中的任何組件的改變都將可能致使須要全面的迴歸測試。
  • (4) 重複 顯然程序中包含大量複製粘貼的代碼是質量低下的,SonarQube能夠展現 源碼中重複嚴重的地方。
  • (5) 註釋不足或者過多 沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變更時,程序的可讀性將大幅降低 而過多的註釋又會使得開發人員將精力過多地花費在閱讀註釋上,亦違背初衷。
  • (6) 缺少單元測試 SonarQube能夠很方便地統計並展現單元測試覆蓋率。
  • (7) 糟糕的設計 經過SonarQube能夠找出循環,展現包與包、類與類之間的相互依賴關係,能夠檢測自定義的架構規則 經過SonarQube能夠管理第三方的jar包,能夠利用LCOM4檢測單個任務規則的應用狀況, 檢測耦合。

經過如下介紹如何基於Jenkins和SonarQube完成代碼質量持續檢測。git

2 環境準備

清單以下,安裝方法自行百度谷歌數據庫

  • Java環境
  • Maven環境
  • SonarQube平臺
  • Jenkins平臺
  • 數據庫(例如MySQL)

3 環境配置

3.1 Maven

爲了基於Maven方式使用Jenkins,須要在Maven安裝目錄下的conf/setting.xml文件配置關於sonar的配置編程

  • sonar.login SonarQube平臺登陸的帳號的用戶名
  • sonar.password
    SonarQube平臺登陸的帳號的密碼
  • sonar.host.url SonarQube平臺的地址
  • sonar.inclusions 代碼分析包括哪些文件須要分析,英文逗號分隔

新增配置

4 使用說明

4.1 Jenkins

建立一個新任務:bash

  • 步驟1 建立 選擇構建一個自由風格的軟件項目 架構

  • 步驟2 配置源碼管理 這裏是使用了Git來作源碼管理,gitlab做爲源碼庫 項目分支填寫master maven

  • 步驟3 配置構建觸發器 這裏配置H 18 * * *,表明每日18點前定時構建 編程語言

  • 步驟4 配置構建 第一行使用jacoco插件,進行代碼覆蓋率測試 第二行使用sonar插件,進行代碼檢測並提交檢測結果工具

clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true -P dev

sonar:sonar
複製代碼

  • 步驟5 配置構建後步驟,發郵件 須要在Jenkins提早配置好郵箱

4.2 SonarQube

SonarQube基本架構圖

SonarQube基本架構圖

SonarQube與項目持續集成架構圖

SonarQube與項目持續集成架構圖

4.2.1 SonarQube說明

4.2.2 開發者本地基於Maven使用SonarQube

Jenkins的每日構建默認是使用master,在開發過程當中,有時須要在開發者的開發中的分支進行代碼檢測 方法:

  • 步驟1 配置Maven 按照 3.1 Maven的配置說明,配置本地的Maven環境

  • 步驟2 觸發檢測 在項目頂層目錄,執行命令:mvn sonar:sonar便可

4.2.3 相關指標說明

指標

4.2.4 代碼質量閾

代碼總體質量的統計,能夠幫助用戶理解項目是否已經能夠投入生產

默認配置(能夠根據項目實際狀況從新配置):

默認質量閾配置

後期展望

  • 目前只接入了Java代碼檢測,後期會將客戶端,前端的代碼檢測也引入
  • 歷史問題結合實際狀況分階段、逐步修復
  • 定時總結,減小或避免在新項目,新代碼引入一樣質量問題

參考

SonarQube代碼質量檢查工具

相關文章
相關標籤/搜索