SonarQub e 與 J enkin s 簡 介
SonarQub e 是 一個開源的代碼質量分析平臺,便於管理代碼的質量,可檢查出項目代碼的漏洞和潛在的邏輯問題。同時,它提供了豐富的插件,支持多種語言的檢測, 如 J ava、Python、Groovy、C、C++等幾十種編程語言的檢測。它主要的核心價值體現在如下幾個方面:
- 檢查代碼是否遵循編程標準:如命名規範,編寫的規範等。
- 檢查設計存在的潛在缺陷:SonarQub e 通 過插 件 F indbugs、Checkstyl e 等 工具檢測代碼存在的缺陷。
- 檢測代碼的重複代碼量:SonarQub e 可 以展示項目中存在大量複製粘貼的代碼。
- 檢測代碼中註釋的程度:源碼註釋過多或者太少都不好,影響程序的可讀可理解性。
- 檢測代碼中包、類之間的關係:分析類之間的關係是否合理,複雜度情況。
SonarQub e 平 臺是 由 4 個 部分組成:
- SonarQube Server
- SonarQube Database
- SonarQube Plugins
- SonarQube Scanner
SonarQube 與 SonarQube-Scanner 的安裝與配置
SonarQube
在 S onarQub e 官 網,我們可以下載最新 的 S ona r 安 裝包,本節 以 L inu x 系 統爲例,搭 建 S onarQub e 平 臺,解壓到任意目錄,如:unzip sonarqube5.6.zip。
SonarQub e 自帶了一個 H2 的數據庫,當然爲了獲得更好的性能我們可以指定一個外部的數據庫,在這裏我們使用 MySQL 數據庫。 先 在 M ysq l 數 據庫中建立一 個 S ona r 數 據庫,主要用於存放分析結果的數據,如 圖 1 :
圖 1. 創建 MySQL 數據庫
進入解壓 的 S onarQue b 目 錄,在系統路徑裏面配 好 p ath,配置如下:
1 2 3 4 5 |
|
並修改配置文 件 s onar.properties,如下:
1 2 3 4 5 6 7 |
|
基本配置完成,在命令行啓 動 S onarQube:進 入 S onarQub e 安 裝目錄,進 入 b i n 目 錄,運行 ./sonar.sh start, 打 開 h ttp://localhost:9000,如果顯 示 S onarQub e 主 頁, 則 S onarQub e 安 裝成功。如 圖 2。
圖 2. SonarQube 啓動頁面
如果需要關 閉 S onarQube,則執行 ./sonar.sh stop
如果需要重 啓 S onarQube,則執行 ./sonar.sh restart
SonarQube Scanner
下 載 S onar-Scanner-2.6.1,解壓到目錄(可解壓到任意目錄)。修改系統路 徑 p ath,如下:
1 2 3 4 5 |
|
修 改 c on f 目 錄的配置文 件 s onar-scanner.properties,具體如下:
1 2 3 4 5 6 7 8 |
|
在命令行中執行 sonar-runner -h 如果顯示以下內容,則安裝成功。 如圖 3。
圖 3. Sonar-Runner
Jenkins 與 SonarQube 集成插件的安裝與配置
Jenkins 是一個支持自動化框架的服務器,我們這裏不做詳細介紹。Jenkins 提供了相關的插件,使得 SonarQube 可以很容易地集成 。 登陸 jenkins,點擊"系統管理",如圖 4。
圖 3. Jenkins 系統管理
點擊管理插件,如圖 4。
圖 4. Jenkins 管理插件
在可選插件中搜索"SonarQube"並安裝它,如圖 5。
圖 5. Jenkins 安裝 SonarQube 插件
進入 Jenkins 系統管理 – 系統設置,配置 SonarQube Server 信息,如圖 6。
圖 6. Jenkis 配置 SonarQube Server
進入 Jenkins 系統管理 - Global Tool Configuration,配置 SonarQube Scanner,如圖 7。
圖 7. Jenkis 配置 SonarQube Scanner
新建 Jenkins 項目
登陸 Jenkins 平臺,點擊新建,如圖 8。
圖 8. 新建 Jenkis 項目
這裏有兩種方法使用 SonarQube Scanner 進行代碼分析,第一種是使用構建後步驟,第二種是在構建的過程中增加 SonarQube Scanner 的步驟,下面我們來分別介紹這兩種方法。
在 Jenkins 項目中使用構建後步驟進行代碼分析
使用構建後步驟進行代碼分析需要使用 Maven 對代碼進行編譯,所以需要有 Maven 的配置文件,例如 pom.xml。
爲新建的 Jenkins 項目配置構建後操作步驟,在構建後步驟配置窗口中需要填入 Maven 的構建配置 xml 文件,如圖 9、10。
圖 9. 新建構建後操作步驟
圖 10. 配置構建後操作步驟
在 Jenkins 項目構建過程中加入 SonarScanner 進行代碼分析
首先需要在新建的 Jenkins 項目的構建環境標籤頁中勾選"Prepare SonarQube Scanner evironment",如圖 11。
圖 11. 配置構建後操作步驟
增加構建步驟"Execute SonarQube Scanner",如圖 12。
圖 12. 增加 Execute SonarQube Scanner 構建步驟
配置 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 參數。如圖 13。
1 2 3 4 5 6 |
|
圖 13. 配置 Execute SonarQube Scanner 構建步驟
查看分析結果
在新建的 Jenkins 項目的構建的 Console Output 中可以得到 SonarQube 分析結果的鏈接,如圖 1。
圖 . Jenkins 項目構建結果
打開構建結果的鏈接來查看具體的分析報告,如 圖 1 2。
圖 12. 分析結果報告
點擊質量閾圖標以查看具體的問題,如 圖 1 3、14。
圖 13. 具體問題展示
圖 14. 具體問題展示