使用 Jenkins 與 Sonar 集成對代碼進行持續檢測

SonarQube 與 Jenkins 簡介

  1. SonarQube是 一個開源的代碼質量分析平臺,便於管理代碼的質量,可檢查出項目代碼的漏洞和潛在的邏輯問題。同時,它提供了豐富的插件,支持多種語言的檢測, 如 Java、Python、Groovy、C、C++等幾十種編程語言的檢測。它主要的核心價值體如今以下幾個方面:
* 檢查代碼是否遵循編程標準:如命名規範,編寫的規範等。
    * 檢查設計存在的潛在缺陷:SonarQube 經過插件 Findbugs、Checkstyle等 工具檢測代碼存在的缺陷。
    * 檢測代碼的重複代碼量:SonarQube能夠展現項目中存在大量複製粘貼的代碼。
    * 檢測代碼中註釋的程度:源碼註釋過多或者太少都很差,影響程序的可讀可理解性。
    * 檢測代碼中包、類之間的關係:分析類之間的關係是否合理,複雜度狀況。
複製代碼
  1. SonarQube 平臺是由4個部分組成:
* SonarQube Server
    * SonarQube Database
    * SonarQube Plugins
    * SonarQube Scanner複製代碼

Jenkins 與 SonarQube 集成插件的安裝與配置

Jenkins 是一個支持自動化框架的服務器,咱們這裏不作詳細介紹。Jenkins 提供了相關的插件,使得 SonarQube 能夠很容易地集成 。java

  1. 登錄 jenkins,點擊"系統管理",如圖。
  2. Jenkins 管理插件
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a69ea73fe75?w=713&h=268&f=png&s=45282)複製代碼
  1. Jenkins 安裝 SonarQube 插件
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6a1b340dfe?w=715&h=230&f=png&s=26862)複製代碼
  1. 進入 Jenkins 系統管理 – 系統設置,配置 SonarQube Server 信息
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6a4b3f8017?w=718&h=314&f=png&s=36283)複製代碼
  1. 進入 Jenkins 系統管理 - Global Tool Configuration,配置 SonarQube Scanner
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6a762ac285?w=709&h=221&f=png&s=24054)複製代碼
  1. 新建 Jenkis 項目
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6aa24186ef?w=713&h=292&f=png&s=46329)複製代碼
  1. 在 Jenkins 項目構建過程當中加入 SonarScanner 進行代碼分析
首先須要在新建的 Jenkins 項目的構建環境標籤頁中勾選"Prepare SonarQube Scanner evironment"複製代碼
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6ad385eff4?w=657&h=425&f=png&s=49643)複製代碼
  1. 增長 Execute SonarQube Scanner 構建步驟
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6b00428be6?w=337&h=424&f=png&s=47266)複製代碼
  1. 配置 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複製代碼
  1. 配置 Execute SonarQube Scanner 構建步驟
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6b223651a2?w=625&h=420&f=png&s=39902)複製代碼
  1. Jenkins 項目構建結果
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6b642a4398?w=717&h=232&f=png&s=56801)複製代碼
  1. 分析結果報告
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6b8f2a7d6d?w=428&h=425&f=png&s=32221)複製代碼
  1. 具體問題展現
![](https://user-gold-cdn.xitu.io/2019/10/11/16db8a6bb83d0623?w=726&h=343&f=png&s=92498)複製代碼

參考資源

Jenkins 官網Sonarqube 官網編程

如感受文章對你有所幫助,能夠關注微信公衆號鼓勵一下
相關文章
相關標籤/搜索