一、sonarqube 的安裝與啓用
1. sonarqube 獲取
注意,我這邊為了能夠使用pdf插件(下載地址),選擇的sonarqube版本為9.9.9LTA版本,親測如果用目前官網最新25+版本,這個生產pdf的插件不支持,會各種錯誤。
與此對應,後續的SonarScanner也是下載的4.8.x版本。
本機環境是windows11
下載後解壓即可(目錄別帶中文及空格等特殊符號,防止有問題)
2.SonarQube配置
SonarQube支持多種數據庫,如Oracle、postgresql、sqlserver等等,按需選擇,我這裏用的本地的pgsql。
如上圖,修改sonar.properties配置文件,添加如下配置:
(不同數據庫的sonar.jdbc.url配置不一樣,配置文件中有,直接搜一下就行,配置文件中也可以看到支持哪些數據庫)
# 指定pg數據庫
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube_old?currentSchema=public
# 指定數據庫用户名
sonar.jdbc.username=postgres
# 指定數據庫密碼
sonar.jdbc.password=postgres
# 指定端口
sonar.web.port=9000
3.啓動SonarQube
前提:本機安裝好jdk17並配置好環境變量(親測,用jdk17可用)
如圖,cmd中直接運行StartSonar.bat命令(或直接雙擊,我是直接cmd中命令啓動的,一開始安裝25+版本的時候,直接雙擊,報錯後直接終端窗口閃退)
啓動後如下圖,見到圈出來的,即為啓動成功(如果啓動失敗可以看/logs文件夾下的日誌,再進行對應處理)
4.訪問
瀏覽器訪問localhost:9000,跳轉到如圖登錄界面,首次登錄需要修改密碼。
初始賬號密碼:admin/admin
二、SonarScanner 插件的安裝與配置
1.下載SonarScanner
前面提過,為了使用後面的pdf生成插件,使用了SonarQube9.x版本,這裏為了和SonarQube9.x適配,SonarScanner這裏版本選擇4.8.x
下載地址
下載解壓後即可使用。
2.配置SonarScanner環境變量
編輯系統環境變量path,填寫SonarScanner安裝目錄
驗證sonar scanner環境變量是否成功:
任意位置,cmd,輸入命令 sonar-scanner -v,能夠如圖顯示出版本信息即可(不要被輸出的java 11.xxx誤解!!不要被誤解需要jdk11,jdk就用之前説的17就行!!!)
3.SonarScanner配置
如圖,配置SonarQube的本機地址以及編碼,和前面SonarQube配置文件一樣配置數據庫信息(這裏有些文章寫的要配,有的不用,我也不清楚,沒細研究,我這裏是配了,沒有嘗試不配置的話會不會有問題)
到此,前置準備已做好,下面開始做代碼檢測
説明:SonarQube是支持很多種檢測代碼的方式的(即create project的方式,如下圖:)
因為我這裏是為了應付項目驗收,沒有嘗試去用gitlab github gitee等代碼倉庫去進行代碼檢測,也沒有結合jenkins去做cicd時觸發代碼檢測(有興趣的話可以研究一下,理想方案是,gitlab+jenkins,以及部署一台sonarqube服務器,把代碼檢測嵌入到cicd流程中去)
三、安裝pdf插件
1.下載
下載地址,直接下載jar包
2.存放
放到SonarQube安裝位置如圖
然後重啓SonarQube
3.SonarQube中PDF配置
重啓後,SonarQube中,如圖會出現個PDF Report菜單,在這其中配置密碼和用户名,直接用登錄的用户名密碼就行。
然後進行後面的代碼檢測。(如果説還沒安裝這個PDF插件前,就進行了代碼檢測,那麼需要在SonarQube中刪除後,重新進行代碼檢測)
三、本地代碼檢測
1.拉取代碼到本地
按需擇選分支,然後一定要maven package打包(我這裏是java項目,sonar必須要檢測.class文件,所以要先package)
2.配置文件
參照官網地址,在項目根目錄創建sonar-project.properties配置文件
# must be unique in a given SonarQube Server instance
sonar.projectKey=test
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
sonar.login=squ_2d90616f765696baabccf63f70182f8998e9abc9
sonar.java.binaries=/target/classes,/target/classes,/target/classes,xxx/target/classes
其中有三個配置比較重要:
- sonar.projectKey
自定義的項目名稱,檢測成功後,SonarQube的project中會根據這個名字進行顯示,生成出的pdf也是基於這個名字。 - sonar.login
這裏要從sonarqube圖形化界面中,去生成token(9.X版本配置名為sonar.login,如果是高版本,應該是sonar.token)
獲取位置:菜單Administration->Security->用户後面的Tokens -
- sonar.java.binaries
這個配置是指定需要檢測的代碼的位置,如果多個的話,可以逗號分隔
3.代碼檢測
- sonar-scanner開始掃描檢測
sonar-project.properties配置文件同級下,cmd終端,輸入命令 sonar-scanner 開始進行代碼檢測,如下圖,最終顯示EXECUTION SUCCESS即為成功。
- 返回SonarQube
即可看到projects下,出現了對應的項目
可以點進去查看項目檢測的詳情,以及如圖,可以下載pdf