代碼質量檢測-Sonar


一。 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查看到所有分析結果  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM