一。 Sonar簡介
sonarqube系統是一個代碼質量檢測工具 由以下四個組件組成(https://docs.sonarqube.org/display/SONAR/Architecture+and+Integration)
1》一個sonarqube服務器 包含三個子進程(web服務(界面管理),搜索服務 計算引擎服務(寫入數據庫))
2》一個sonarqube數據庫 配置sonarqube服務
3》多個sonarqube插件 位於解壓目錄 extensions\plugins目錄
4》一個或者多個sonarqube scanners 用於分析特定的項目
使用SonarQube(簡稱SQ)工作流程
開發者使用開發工具(eclipse,ide)上傳代碼到SCM(源代碼管理器) 系統自動同步代碼到某個位置 sonarqube scanners 掃描該代碼檢查質量 將分析結果 將分析結果推送到SQServer 存儲在SQ數據庫 用戶可以使用eclipse插件sonarlint來同步sonarqube服務器配置(java和js版本等)可以實時在線分析
二。SonarQube安裝
sonarqube官方文檔(文檔https://docs.sonarqube.org)
安裝過程參考(https://docs.sonarqube.org/display/SONAR/Setup+and+Upgrade)
1》下載並且解壓
下載 sonarqube-5.4 點擊文檔 https://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes 的download page 進入下載
這里使用window解壓后進入 sonarqube-5.4\bin\windows-x86-64目錄
點擊 StartSonar.bat運行
瀏覽器輸入地址 http://localhost:9000/ 輸入賬號密碼 admin/admin 進入
2》修改SQ默認的數據庫
sq支持多種數據庫引擎 默認內嵌了一個數據庫 默認打開端口9092 這里使用mysql替代
啟動任意mysql 創建一個數據庫 名字:sonar
找到conf/sonar.properties 將配置文件以下幾項打開
#----- MySQL 5.x
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?
useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=123456
重新啟動 使用客戶端連接mysql 的sonar庫發現多了很多表
3》SQ漢化
點擊官方文檔左側的Plugins 進入右側右下角的Localization 點擊Chinese 進入了github地址(
https://github.com/SonarQubeCommunity/sonar-l10n-zh) 對應版本是
SonarQube 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7
sonar-l10n-zh 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19
SonarQube 5.4 5.5 5.6
sonar-l10n-zh 1.9 1.10 1.11
SonarQube 4.0 4.1
sonar-l10n-zh 1.7 1.8
SonarQube 3.1 3.2 3.3 3.4 3.5 3.6 3.7
sonar-l10n-zh 1.0 1.1 1.2 1.3 1.4 1.5 1.6
查看對應的版本 5.4需要1.9的sonar-l10n-zh 點擊releases下載對應版本
將下載好的jar 置入 extensions\plugins目錄下
重啟服務 訪問http://localhost:9090發現變成中文版
另外一種方式 也可以登錄系統 點擊配置-系統-更新中心管理插件 可以在線搜索安裝chinese插件
三。Sonar分析項目
1》命令行使用SonarQube Scanner分析
進入官方文檔 點擊Scanners 點擊子菜單 Analyzing with SonarQube Scanner 根據官方向導進行配置
點擊 文檔頂部的 不同系統版本 這里是 Windows 64 bit 下載后 解壓
設置 sonar-scanner-3.0.3.778-windows\bin 設置到環境變量PATH中
修改 conf/sonar-scanner.properties 指定sonar qube服務器的地址 默認如果按照在本機無需修改
sonar.host.url=http://localhost:9000
找一個有源代碼的項目 比如我有個項目叫kafka 在項目的根目錄 添加一個配置文件sonar-project.properties 添加內容
# 當前項目實例的唯一表示
sonar.projectKey=kafka
# 顯示在sonarqube 界面上的項目名稱
sonar.projectName=kafka
sonar.projectVersion=1.0
# 相對於當前配置文件目錄 下的源代碼目錄 不管什么平台路徑分隔符只能有 / 不能使用\
sonar.sources=src/main/java
# 源代碼的字符集
#sonar.sourceEncoding=UTF-8
進入kafka項目根目錄 執行命令 sonar-scanner 出現 執行 EXECUTION SUCCESS 表示成功
成功后進入qb ui界面 http://localhost:9000 可以看到多出一個kafka的項目列表
點擊項目名稱 進入 可以看到該項目的所有統計 包括存在問題
點擊問題進入 就能看到對應的問題列表
eclipse ide安裝sonarlint 實時監測代碼質量 插件地址https://github.com/SonarSource/sonarlint-eclipse 可以使用markerplace搜索安裝
安裝使用mars(4.5.2) 無論是markerplace還是下載包離線安裝都無法安裝 安裝Eclipse Java Oxygen版本 可以在markerplace搜索安裝
查找視圖 SonarQube Servers 點擊 Connect to a SonarQube server
選中 sonarqube點擊下一步 輸入url http://localhost:9000 輸入用戶名和密碼 (admin/admin) 點擊完成 拋出錯誤
Starting SonarLint for Eclipse 3.3.1.201712071600
The following plugins do not meet the required minimum versions, please upgrade them on your SonarQube server:
java (installed: 3.13.1, minimum: 4.0)
javascript (installed: 2.11, minimum: 2.14)
因為sonarqube使用 sonar-java插件來掃描java代碼 使用 sonar-javascript插件掃描js代碼 控制質量 這里我使用的sonarqube必須是 5.6版本 默認的java插件時3.13.1 (https://github.com/SonarSource/sonar-java)最小必須使用4.0 js插件時 2.11 最小必須是 2.14 (https://github.com/SonarSource/SonarJS)可以去github上搜索兩個插件到release上下載 刪除之前的版本 替換到 extensions\plugins目錄即可
再次在 SonarQube Servers 右鍵 Update all project setting 發現不再報錯
在項目上右鍵 分析項目 在SonarLint Report查看到所有分析結果