Windows下配置SonarQube Scanner檢測分析代碼
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLlJXd0NWZ0lGajJXQfVmY1Flch52bT9CX5ATOw8CX4EDMy8CXyVGdzFWbvw1dhJ3LcRWZi1CawFmcH9CXk9FelxWYvwVbvNmLlVGdpd2Lc9CX6MHc0RHaiojIsJye.png)
首先這裡繼續引用下SonarQube的架構圖,在上文中記錄了Windows下SonarQube服務及資料庫環境的配置,本文則在此基礎上,簡單記錄SonarQube Scanner代碼分析工具的配置及使用,文中發現有問題或疏漏,希望可以得到您的回報。
對于SonarQube Scanner這裡不做太多介紹了,至于為什麼使用SonarQube Scanner,看這裡
SonarQube官方文檔 推薦使用,更多原因,自行百度了~
Maven配置SonarQube Scannar實作代碼分析
此處通過在Maven中配置Sonar Scanner,然後使用 mvn sonar:sonar
指令完成對代碼的分析,該方式針對Maven建構項目,Gradle建構的項目未測試,自行嘗試。
Maven環境配置
為了可以使用Maven指令運作Sonar來分析項目代碼,首先需要将Maven的bin目錄添加到環變量内,如下:
配置完成後,在指令行視窗使用指令
mvn -v
檢視Maven版本等資訊,驗證環境變量配置完成
Maven增加SonarQube Scanner配置
首先在 Maven 的
conf
目錄下找到Maven的配置檔案
settings.xml
,搜尋到
<profiles>
節點,在其中添加SonarQube Scanner的配置,如下圖:
<profiles>
<!-- 複制以下内容 -->
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- 配置 Sonar服務位址,此處為本地服務 -->
<sonar.host.url>
http://127.0.0.1:9000/
</sonar.host.url>
</properties>
</profile>
<!-- 複制以上内容 -->
</profiles>
注意: 若在Maven的目錄下未找到
conf
配置檔案,則可以在Maven倉庫預設目錄
settings.xml
下查找。
C:\Users\[你登陸賬号的使用者名]\.m2
Maven項目目錄執行指令分析
進入想要檢測分析的Maven項目目錄,在項目根目錄打開指令行,輸入指令
mvn sonar:sonar
首次進行代碼檢測掃描時,會下載下傳SonarQube Scanner相關jar包,類似下圖:
掃描完成後,會看到
BUILD SUCCESS
的提示,到此代碼的檢測掃描完成。
IDEA内通過Maven執行SonarQube Scanner分析
下面介紹,在上步操作完成的基礎上,怎麼在IDEA開發工具内使用使用SonarQube Scanner進行代碼檢測分析。
首先IDEA打開需要檢測分析的Maven項目,在
Run/Debug Configurations
中,添加一個Maven的運作配置,具體配置如下:
配置完成後,選擇此運作方式,點選運作,控制台可以看到類似上步中指令行視窗的輸出内容,等待出現
BUILD SUCCES
的提示字樣後,表示代碼的檢測分析完成,此時可以在SonarQube服務内檢視分析結果。此處僅測試IDEA環境,Eclipse等其他IDE開發工具自行測試。
SonarQube Scanner配置
前面說了Maven使用SonarQube Scanner完成對Maven代碼的檢測分析,下面記錄直接下載下傳的SonarQube Scanner配置及使用。
SonarQube Scanner下載下傳
可以在此處下載下傳支援各種環境的SonarQube Scanner,根據自己需要進行選擇即可。在SonarQube官網下載下傳對應系統版本的SonarQube Scanner cli,該版本支援指令行模式。
下載下傳完成後,任意目錄下解壓,目錄結構大緻如下,目錄作用類似SonarQube
SonarQube Scanner配置
- 配置環境變量(為了可以全局使用SonarQube Scanner)
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄 - 驗證環境變量是否配置成功
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄 -
添加檢測掃描的項目
打開SonarQube Scanner的配置檔案(
) ,配置如下..\sonar-scanner-3.2.0.1227-windows\conf\sonar-scanner.properties
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
# 配置項目的Key(每個項目唯一的項目鍵,使用Maven時設定為 <groupId>:<artifactId>)
sonar.projectKey=com.codersoft:cms
# 配置分析的項目在SonarQube服務界面顯示的名稱
sonar.projectName=cms
# 配置分析的項目的版本(使用Maven時取<version>的值)
sonar.projectVersion=1.0
# 配置要分析的項目根目錄
sonar.projectBaseDir=D:/work/workspace/gitee/cms/rbac/cms
# 配置包含源檔案的目錄(未設定,則從預設的Maven源代碼位置檢索)
sonar.sources=.
添加完成後,指令行視窗,執行指令
sonar-scanner -Dsonar.java.binaries=.
(SonarQube的sonar-java-plugin插件版本大于4.12後,不能直接使用
sonar-scanner
指令,需要提供對應源碼的位元組碼,詳情看文末異常問題記錄)
更多SonarQube Scanner内容見SonarQube官網文檔, 更多SonarQube配置的分析參數見此處
IDEA配置SonarLint插件
IDEA支援不少用于代碼品質檢測的插件,如阿裡巴巴的代碼規範插件、FindBugs等,此處可以嘗試使用SonarLint插件。
SonarLint插件安裝
在IDEA中打開設定界面(
File -> Settings
) , 選擇
Plugins
進入IDEA的插件市場搜尋
SonarLint
進行安裝
等待下載下傳安裝完成後,重新開機的IDEA中即可完成安裝。
安裝完成重新開機IDEA後,會出現如下提示,此時需要對SonarLint插件進行配置
安裝提示,點選
SonarLint project configuration
進行SonarLint 項目的配置
或在設定中進行配置
此處關閉遠端SonarQube Server的綁定,即使用本地SentLint插件預設的代碼檢測規則。這樣就可以在本地環境下使用預設規則進行代碼檢測分析,可以點選菜單項
Analyze
,找到
Aanlyze all files with SonarLint
的子菜單項
嘗試點選此項,來檢測分析目前項目的所有檔案
單個檔案的檢測,可以在想檢測檔案右鍵選擇
SonarLint
進行檢測,具體操作此處不贅述。
SonarLint插件配置
SonarQube可以針對項目進行檢測規則等設定,要讓IDEA中SonarLint插件同步使用SonarQube服務中更新的規則,則需要如下配置
- 配置SonarQube Server 支援兩種登陸驗證方式,此處使用本地SonarQube服務,則使用賬号密碼登陸(遠端項目,可以使用Token驗證)
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄 Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄 Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄 - 綁定配置SonarQube服務内的項目,用于同步檢測規則
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄 注意:SonarQube沒有服務時,此處無法配置,可以通過SonarQube Scanner或Maven來進行項目代碼的檢測分析,實作項目的添加。
配置完成後,回到服務配置界面,點選更新規則,即可擷取SonarQube服務上針對該項目配置的檢測規則。
最後,SonarQube的Token,可以在使用者設定裡進行增删
SonarQube服務内檢視分析結果
完成代碼的分析檢測後,可以在浏覽器通路SonarQube服務位址,此處為本地搭建服務,則通路位址
http:\\localhost:9000
可以在Sonar服務管理頁面内看到新掃描的Maven項目的分析報告,此時根據需要檢視對應内容,不再贅述。
SonarQube Scanner異常問題記錄
SonarQube Scanner執行指令時,出現錯誤時,可以通過執行
sonar-scanner
來輸出詳細錯誤日志,友善問題的排查。
sonar-scanner -X
異常 AnalysisException: Please provide compiled classes of your project with sonar.java.binaries property
該問題原因見官方文檔
大體意思,自SonarJava 4.12後,不使用Maven或Gradle建構工具來分析代碼時,必須手動提供與源代碼對應的位元組碼,否則就會分析失敗,并出現該異常提示。
可以嘗試通過以下方式處理:
- 執行指令修改為
sonar-scanner -Dsonar.java.binaries=.
- 或在配置檔案内添加下列配置(追加内容在上文基礎上進行)
# sonar.sources=. # 此處配置該項目的子項目的源碼檔案目錄 sonar.sources=./cms-common/src,./cms-dao/src,./cms-service/src,./cms-tester/src,./cms-web/src # SonarJava 4.12 以後,不使用Maven等建構工具分析代碼,則必須手動提供對應源代碼的位元組碼 # 此處配置該項目的子項目的class位元組碼檔案目錄 sonar.java.binaries=./cms-common/target/classes,./cms-dao/target/classes,./cms-service/target/classes,./cms-tester/target/test-classes,./cms-web/target/classes
- 下載下傳SonarJava 4.12之前版本的插件,替換現有版本,插件源碼下載下傳位址 ,插件jar包下載下傳位址 下載下傳完成後,替換
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
目錄下的..\sonarqube-6.7.5\extensions\plugins\
(本文SonarQube的SonarJava插件版本為sonar-java-plugin-xxx.jar
) ,重新開機SonarQube服務即可。5.7.0.15470
網上很多文章提供第三種方法解決該異常,我下載下傳了
4.10.0.10260
版本的java插件jar包,按照此思路替換插件jar包後,重新開機服務,如出現下圖提示情況
且運作
sonar-scanner
指令出現SonarQube服務(本文已經将SonarQube服務配置為系統服務)停止的情況,在嘗試清理
c:\user\[你目前登陸計算機的使用者名]\.sonar
下的檔案全部删除,然後重新開機服務,依舊出現上文提示,且服務過一段時間也會停止運作。具體原因暫不明确,初步認為是插件版本問題,不知是否還有還是其他問題,未做更多版本測試,本文暫不推薦第三種方法處理,如遇到此情況,且知道解決方案的希望告知,謝謝。