1. 程式人生 > >使用 Jenkins 與 Sonar 整合對程式碼進行持續檢測

使用 Jenkins 與 Sonar 整合對程式碼進行持續檢測

SonarQube 與 Jenkins 簡介

  1. SonarQube是 一個開源的程式碼質量分析平臺,便於管理程式碼的質量,可檢查出專案程式碼的漏洞和潛在的邏輯問題。同時,它提供了豐富的外掛,支援多種語言的檢測, 如 Java、Python、Groovy、C、C++等幾十種程式語言的檢測。它主要的核心價值體現在如下幾個方面:

    • 檢查程式碼是否遵循程式設計標準:如命名規範,編寫的規範等。
    • 檢查設計存在的潛在缺陷:SonarQube 通過外掛 Findbugs、Checkstyle等 工具檢測程式碼存在的缺陷。
    • 檢測程式碼的重複程式碼量:SonarQube可以展示專案中存在大量複製貼上的程式碼。
    • 檢測程式碼中註釋的程度:原始碼註釋過多或者太少都不好,影響程式的可讀可理解性。
    • 檢測程式碼中包、類之間的關係:分析類之間的關係是否合理,複雜度情況。
  2. SonarQube 平臺是由4個部分組成:

    • SonarQube Server
    • SonarQube Database
    • SonarQube Plugins
    • SonarQube Scanner

Jenkins 與 SonarQube 整合外掛的安裝與配置

Jenkins 是一個支援自動化框架的伺服器,我們這裡不做詳細介紹。Jenkins 提供了相關的外掛,使得 SonarQube 可以很容易地整合 。

  1. 登陸 jenkins,點選"系統管理",如圖。

  2. Jenkins 管理外掛

  3. Jenkins 安裝 SonarQube 外掛

  4. 進入 Jenkins 系統管理 – 系統設定,配置 SonarQube Server 資訊

  5. 進入 Jenkins 系統管理 - Global Tool Configuration,配置 SonarQube Scanner

  6. 新建 Jenkis 專案

  7. 在 Jenkins 專案構建過程中加入 SonarScanner 進行程式碼分析

    首先需要在新建的 Jenkins 專案的構建環境標籤頁中勾選"Prepare SonarQube Scanner evironment"

  8. 增加 Execute SonarQube Scanner 構建步驟

  9. 配置 SonarQube Scanner 構建步驟,在 Task to run 輸入框中輸入 scan,即分析程式碼;在 JDK 選擇框中選擇 SonarQube Scanner 使用的 JDK(注意這裡必須是 JDK 不能是 JRE);Path to project properties 是可選擇的輸入框,這裡可以指定一個 sonar-project.properties 檔案,如果不指定的話會使用專案預設的 properties 檔案;Analysis properties 輸入框,這裡需要輸入一些配置引數用來傳遞給 SonarQube,這裡的引數優先順序高於 sonar-project.properties 檔案裡面的引數,所以可以在這裡來配置所有的引數以替代 sonar-project.properties 檔案,下面列出了一些引數,sonar.language 指定了要分析的開發語言(特定的開發語言對應了特定的規則),sonar.sources 定義了需要分析的原始碼位置(示例中的$WORKSPACE 所指示的是當前 Jenkins 專案的目錄),sonar.java.binaries 定義了需要分析程式碼的編譯後 class 檔案位置;Additional arguments 輸入框中可以輸入一些附加的引數,示例中的-X 意思是進入 SonarQube Scanner 的 Debug 模式,這樣會輸出更多的日誌資訊;JVM Options 可以輸入在執行 SonarQube Scanner 是需要的 JVM 引數

     sonar.projectKey=testSonar 
     sonar.projectName=testSonar 
     sonar.projectVersion=1.0 
     sonar.language=java 
     sonar.java.binaries=$WORKSPACE/testSonar/target/test-classes/ 
     sonar.sources=$WORKSPACE/testSonar/src
  10. 配置 Execute SonarQube Scanner 構建步驟

  11. Jenkins 專案構建結果

  12. 分析結果報告

  13. 具體問題展示

參考資源

Jenkins 官網
Sonarqube 官網

**如感覺文章對你有所幫助,可以關注微信公眾號鼓勵一下**
![](https://img2018.cnblogs.com/blog/1821244/201910/1821244-20191011102956744-427002868.jpg)