2021-05-12 14:32:11
SonarQube 安裝圖文詳解
一 . SonarQube程式碼品質檢查工具簡介
Sonar (SonarQube)是一個開源平台,用於管理原始碼的品質
Sonar 不只是一個品質資料包告工具,更是程式碼品質管理平台
支援Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十幾種程式語言的程式碼品質管理與檢測。
Sonar可以從以下七個維度檢測程式碼品質,而作為開發人員至少需要處理前5種程式碼品質問題。
-
不遵循程式碼標準
-
sonar可以通過PMD,CheckStyle,Findbugs等等程式碼規則檢測工具規範程式碼編寫。
-
潛在的缺陷
sonar可以通過PMD,CheckStyle,Findbugs等等程式碼規則檢測工具檢 測出潛在的缺陷。
-
糟糕的複雜度分布
檔案、類、方法等,如果複雜度過高將難以改變,這會使得開發人員 難以理解它們, 且如果沒有自動化的單元測試,對於程
序中的任何元件的改變都將可能導致需要全面的回歸測試。
-
重複
顯然程式中包含大量複製貼上的程式碼是品質低下的,sonar可以展示 原始碼中重複嚴重的地方。
-
注釋不足或者過多
沒有注釋將使程式碼可讀性變差,特別是當不可避免地出現人員變動 時,程式的可讀性將大幅下降 而過多的注釋又會使得開發人員將精力過多地花費在閱讀注釋上,亦違背初衷。
-
缺乏單元測試
sonar可以很方便地統計並展示單元測試覆蓋率。
-
糟糕的設計
通過sonar可以找出迴圈,展示包與包、類與類之間的相互依賴關係,可以檢測自定義的架構規則 通過sonar可以管理第三方
的jar包,可以利用LCOM4檢測單個任務規則的應用情況, 檢測藕合。
為什麼要選擇sonarQube?
個人使用之後認為 : sonarQube的優勢如下(相比於阿里編碼規約這種市面上常見類似軟體):
-
更加優秀的圖形化介面
基本上通過介面就可以對自己專案的程式碼狀況一目了然
-
可以查詢出其它軟體難以定位到的問題
比如 :
可能導致空指標異常的問題 (物件在進行使用前沒有加空的判斷)
可能導致記憶體漏失的問題, 在try catch 塊裡面,直接使用e.printStackTrace()將堆疊資訊列印到記憶體的
可能導致的漏洞 : 成員變數使用public定義的
還有諸如 : 流等未關閉或者是非正常關閉都能夠檢測出來!
功能非常強大!!
二. 安裝:
2.1 安裝SonarQube web server
-
首先確保安裝了jdk1.8 +
-
到此連結 https://www.sonarqube.org/downloads/
下載sonalqube(下載社群版,是開源的),
我下載的是sonarqube-7.2.1,因為最新版7.9.1需要jdk11支援
並解壓,解壓完之後的目錄如下 :
- 到解壓目錄的binmacosx-universal-64(對應系統)目錄下:
linux、Mac sh sonar.sh start啟動
windows 雙擊StartSonar.bat 啟動
-
到瀏覽器介面,輸入 : http://localhost:9000
如果能存取表明安裝成功
2.2 安裝資料庫
-
版本要求:
在conf目錄下的sonar.properties檔案下:
有這樣一行設定 :
#----- MySQL >=5.6 && < 8.0
-
為sonarqube 建立一個資料庫
create database sonar; -- 建立資料庫
- 建立sonarqube使用者並進行授權
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; -- 建立使用者並設定密碼 -- username 為建立的使用者名稱 -- host 為對應的主機地址,本地就是localhost -- password 為設定的密碼 GRANT ALL ON *.* TO 'username'@'localhost'; -- 對使用者進行授權操作
- 修改SonarQube組態檔,新增Mysql相關設定
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
2.3 重新啟動伺服器端
- 退出 SonarQube 伺服器端
在之前彈出的cmd視窗執行ctrl + c,
彈出來的提示選擇Y,退出SonarQube服務
- 雙擊StartSonar.bat檔案, 重新啟動SonarQube
這次因為要進行資料庫的初始化操作,所以需要的時間可能稍微久一點
-
啟動成功後,瀏覽器輸入 : http://localhost:9000 進入介面
-
登入
點選介面右上角的登入按鈕, 進行登入 :
初始的賬戶名 : admin
初始的密碼 : admin
附 : 一些關鍵設定的修改,如 主機地址,context,埠號等:
通常情況下使用預設的設定即可!
檔案 /conf/sonar.properties
#sonar.web.host=0.0.0.0 #sonar.web.context= #sonar.web.port=9000
三. 使用
3.1. 安裝必要的外掛 (漢化包舉例)
點選 導航欄的 Administration, 選擇Marketplace
搜尋 Chinese pack, 點選install進行安裝
安裝成功後, 重新啟動 SonarQube !
3.2. 開始分析專案程式碼原始碼
使用maven的方式進行分析
3.2.1 編輯maven 的settings.xml檔案
<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 伺服器地址。
3.2.2 對maven專案進行分析
到專案所在的檔案路徑下:
使用命令提示字元或者是power shell執行 如下命令:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar
出現: BUILD SUCCESS 標識之後
重新整理介面檢視 :
3.3 設定分析引數
強制引數:
- Server
sonar.host.url http://localhost:9000 - Project Configuration
sonar.projectKey Maven :
sonar.sources Maven 預設的原始碼路徑
可以設定的引數:
-
Project identity
sonar.projectName 專案名稱
sonar.projectversion 專案版本 -
Authentication
sonar.login 分析該專案的使用者名稱稱
sonar.password 分析該專案的使用者密碼3.4. 程式設計師使用者使用說明
SonarQube Web管理者通過設定和設定以下引數值對專案原始碼進行:
複雜度、覆蓋率、文件、重複、問題、可維護性、可靠性、安全性、大小等約束和規範。
sonar中的品質閾管理以下內容。
複雜度 複雜度 複雜度/類 複雜度/檔案 複雜度/方法 覆蓋率 分支覆蓋 整合測試的新分支覆蓋 新程式碼的分支覆蓋率 覆蓋率 新整合測試覆蓋 新覆蓋率 整合測試分支覆蓋 整合測試覆蓋 整合測試覆蓋行 整合測試未覆蓋分支 整合測試未覆蓋行 程式碼覆蓋率 整合測試的新行覆蓋 新程式碼覆蓋率 程式碼行 整合測試的新行覆蓋 覆蓋的新程式碼 總體分支覆蓋率 總體新分支覆蓋率 總體覆蓋率 總體新覆蓋率 總體程式碼覆蓋率 總體新程式碼覆蓋率 總體覆蓋的新行數 總體未覆蓋分支 總體未覆蓋的新分支 總體未覆蓋程式碼 總體未覆蓋新行數 單元測試忽略數 未覆蓋分支 整合測試未覆蓋的新分支 未覆蓋新分支 未覆蓋的程式碼 整合測試未覆蓋的行 未覆蓋的新程式碼 單元測試持續時間 單元測試錯誤數 單元測試失敗數 單元測試成功 (%) 單元測試數 文件 注釋行 注釋 (%) 公共API 公共注釋的API (%) 公共未注釋的API 重複 重複塊 重復檔案 重複行 重複行(%) 問題 阻斷違規 確認問題 嚴重違規 誤判問題 提示違規 違規 主要違規 次要違規 新阻斷違規 新嚴重違規 新提示違規 新違規 新主要違規 新次要違規 開啟問題 重開問題 不修復的問題 可維護性 新程式碼的技術債務 壞味道 達到可維護性A級所需的工作 新增壞味道 技術債務 技術債務比率 新程式碼技術債務比率 Management Burned budget Business value Team size 可靠性 Bugs 新增Bugs 可靠性修復工作 新程式碼的可靠性修復工作 安全性 新增漏洞 安全修復工作 新程式碼的安全修復工作 漏洞 大小 類 目錄 檔案 方法 生成的行數 生成的程式碼行數 行數 程式碼行數 專案 語句
相關文章