親測有效
環境:springboot+gradle+jdk1.8+sonarqube7.4
一、說明:
SonarQube為靜態代碼檢查工具,采用B/S架構,幫助檢查代碼缺陷,改善代碼質量,提高開發速度,通過插件形式,可以支持Java、C、C++、JavaScripe等等二十幾種編程語言的代碼質量管理與檢測。
通過客戶端插件分析源代碼,sonar客戶端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式等,官網是這么列舉的很方便集成:
- Gradle - 用於Gradle的SonarScanner
- MSBuild - 用於MSBuild的SonarScanner
- Maven - 使用SonarScanner for Maven
- Jenkins - Jenkins的SonarScanner
- Azure DevOps - Azure DevOps的SonarQube擴展
- Ant - 用於Ant的SonarScanner
- 其他任何東西(CLI) - SonarScanner
每一種都有自己的分析機制對項目源代碼進行分析和掃描,並把分析掃描后的結果上傳到sonar的數據庫,通過sonar web界面對分析結果進行查看管理
架構圖
下載sonarqube包:https://www.sonarqube.org/。現在下載使用的是7.4。下載后是zip格式,linux下和windows下都是這個包,解壓即可。
下載sonarqube中文包:地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases,根據對應的版本,下載對應的sonar-l10n-zh-plugin-***.jar包,下載下來后,把jar放到sonarqube-7.4/extensions/plugins目錄下,
二、配置
配置文件為/conf/sonar.properties。可以設置使用的數據庫和提供的ip和端口。使用postgresql數據庫需要注意不能指定模式名稱,必須使用默認的default。如果不使用需要按照文檔做更多配置來支持。現在配置如下即可
sonar.jdbc.url=jdbc:postgresql://192.169.31.106:5432/sonar
sonar.jdbc.username=postgres
sonar.jdbc.password=123456
sonar.web.host=192.169.31.107
sonar.web.port=9000
數據庫可以不進行配置,若不配置則使用自帶數據庫,不支持數據遷移。Ip為部署機器的ip
三、啟動
Windows下:在sonarqube-7.4/bin目錄下,根據對應的系統版本,選擇對應的文件夾,我的是windows 64位,故選擇windows-x86-64目錄,打開文件StartSonar.bat ,
Linux下:
1、 創建新用戶:adduser sonarUser
2、 改變權限:、chown -R sonarUser:sonarUser /usr/local/sonarqube-7.4/
3、 切換至普通用戶下,進入bin/linux64啟動下:./sonar.sh console 日志啟動模式;./sonar.sh start 后台啟動模式;第一次啟動可以使用日志模式查看下是否能成功啟動,若沒有問題,停掉后再切換為后台啟動
4、 如果啟動出錯可以查看下/sonarqube-7.4/temp/conf/es的權限是改變了,如果沒有改變則重新執行chown -R sonarUser:sonarUser /usr/local/sonarqube-7.4/對應目錄
四、gradle集成:
Build.gradle中配置:
plugins {
id "org.sonarqube" version "2.6.2"
}
buildscript
{
repositories
{
maven
{
url
"https://plugins.gradle.org/m2/"
}
}
dependencies
{
classpath
"org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2"
}
}
apply plugin
:"org.sonarqube"
在build.gradle平級目錄新建gradle.properties配置文件。內容為systemProp.sonar.host.url=http://172.16.31.107:9000。次配置是為了將掃描代碼結果傳送給sonar服務。
在gradle命令行輸入:gradle sonarqube即可進行掃描。
五、打開瀏覽器輸入192.169.31.107:9000訪問掃描結果。