Sonar (SonarQube)是一個開源平臺,用於管理源代碼的質量mysql
Sonar 不僅是一個質量數據報告工具,更是代碼質量管理平臺linux
支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種編程語言的代碼質量管理與檢測。程序員
Sonar能夠從如下七個維度檢測代碼質量,而做爲開發人員至少須要處理前5種代碼質量問題。web
sonar能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。sql
文件、類、方法等,若是複雜度太高將難以改變,這會使得開發人員 難以理解它們, 且若是沒有自動化的單元測試,對於程shell
序中的任何組件的改變都將可能致使須要全面的迴歸測試。數據庫
顯然程序中包含大量複製粘貼的代碼是質量低下的,sonar能夠展現 源碼中重複嚴重的地方。macos
沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變更 時,程序的可讀性將大幅降低 而過多的註釋又會使得開發人員將精力過多地花費在閱讀註釋上,亦違背初衷。編程
sonar能夠很方便地統計並展現單元測試覆蓋率。windows
經過sonar能夠找出循環,展現包與包、類與類之間的相互依賴關係,能夠檢測自定義的架構規則 經過sonar能夠管理第三方
的jar包,能夠利用LCOM4檢測單個任務規則的應用狀況, 檢測藕合。
我的使用以後認爲 : sonarQube的優點以下(相比於阿里編碼規約這種市面上常見相似軟件):
基本上經過界面就能夠對本身項目的代碼情況一目瞭然
好比 :
可能致使空指針異常的問題 (對象在進行使用前沒有加空的判斷)
可能致使內存泄漏的問題, 在try catch 塊裏面,直接使用e.printStackTrace()將堆棧信息打印到內存的
可能致使的漏洞 : 成員變量使用public定義的
還有諸如 : 流等未關閉或者是非正常關閉都可以檢測出來!
功能很是強大!!
下載sonalqube(下載社區版,是開源的),
我下載的是sonarqube-7.2.1,由於最新版7.9.1須要jdk11支持
並解壓,解壓完以後的目錄以下 :
linux、Mac sh sonar.sh start
啓動
windows 雙擊StartSonar.bat
啓動
若是能訪問代表安裝成功
在conf目錄下的sonar.properties文件下:
有這樣一行配置 :
#----- MySQL >=5.6 && < 8.0複製代碼
create database sonar;
-- 建立數據庫複製代碼
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- 建立用戶並設置密碼
-- username 爲建立的用戶名
-- host 爲對應的主機地址,本地就是localhost
-- password 爲設置的密碼
GRANT ALL ON *.* TO 'username'@'localhost';
-- 對用戶進行受權操做複製代碼
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
# 剛剛建立的sonarQube用戶
sonar.jdbc.username=sonar
# 建立用戶對應的密碼
sonar.jdbc.password=sonar
# 設置編碼格式爲UTF-8
sonar.sorceEncoding=UTF-8
# sonar登錄用戶名
sonar.login=admin
# sonar登錄密碼
sonar.password=admin複製代碼
在以前彈出的cmd窗口執行ctrl + c,
彈出來的提示選擇Y,退出SonarQube服務
此次由於要進行數據庫的初始化操做,因此須要的時間可能稍微久一點
點擊界面右上角的登陸按鈕, 進行登陸 :
初始的帳戶名 : admin
初始的密碼 : admin
附 : 一些關鍵配置的修改,如 主機地址,context,端口號等:
一般狀況下使用默認的配置便可!
文件 /conf/sonar.properties
#sonar.web.host=0.0.0.0
#sonar.web.context=
#sonar.web.port=9000複製代碼
點擊 導航欄的 Administration, 選擇Marketplace
搜索 Chinese pack, 點擊install進行安裝
安裝成功後, 重啓 SonarQube !
使用maven的方式進行分析
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://loaclhost:9000</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>複製代碼
其中sonar.host.url 值就是 上文啓動的sonar 服務器地址。
到項目所在的文件路徑下:
使用命令提示符或者是power shell執行 以下命令:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar複製代碼
出現: BUILD SUCCESS 標識以後
刷新界面查看 :
強制參數:
能夠配置的參數:
SonarQube Web管理者經過配置和設置如下參數值對項目源代碼進行:
複雜度、覆蓋率、文檔、重複、問題、可維護性、可靠性、安全性、大小等約束和規範。
sonar中的質量閾管理如下內容。
複雜度
複雜度
複雜度/類
複雜度/文件
複雜度/方法
覆蓋率
分支覆蓋
集成測試的新分支覆蓋
新代碼的分支覆蓋率
覆蓋率
新集成測試覆蓋
新覆蓋率
集成測試分支覆蓋
集成測試覆蓋
集成測試覆蓋行
集成測試未覆蓋分支
集成測試未覆蓋行
代碼覆蓋率
集成測試的新行覆蓋
新代碼覆蓋率
代碼行
集成測試的新行覆蓋
覆蓋的新代碼
整體分支覆蓋率
整體新分支覆蓋率
整體覆蓋率
整體新覆蓋率
整體代碼覆蓋率
整體新代碼覆蓋率
整體覆蓋的新行數
整體未覆蓋分支
整體未覆蓋的新分支
整體未覆蓋代碼
整體未覆蓋新行數
單元測試忽略數
未覆蓋分支
集成測試未覆蓋的新分支
未覆蓋新分支
未覆蓋的代碼
集成測試未覆蓋的行
未覆蓋的新代碼
單元測試持續時間
單元測試錯誤數
單元測試失敗數
單元測試成功 (%)
單元測試數
文檔
註釋行
註釋 (%)
公共API
公共註釋的API (%)
公共未註釋的API
重複
重複塊
重複文件
重複行
重複行(%)
問題
阻斷違規
確認問題
嚴重違規
誤判問題
提示違規
違規
主要違規
次要違規
新阻斷違規
新嚴重違規
新提示違規
新違規
新主要違規
新次要違規
開啓問題
重開問題
不修復的問題
可維護性
新代碼的技術債務
壞味道
達到可維護性A級所需的工做
新增壞味道
技術債務
技術債務比率
新代碼技術債務比率
Management
Burned budget
Business value
Team size
可靠性
Bugs
新增Bugs
可靠性修復工做
新代碼的可靠性修復工做
安全性
新增漏洞
安全修復工做
新代碼的安全修復工做
漏洞
大小
類
目錄
文件
方法
生成的行數
生成的代碼行數
行數
代碼行數
項目
語句複製代碼