一暑中、概述
Sonar是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái)壹瘟,用于管理源代碼的質(zhì)量,可以從多個(gè)維度檢測(cè)代碼質(zhì)量痒芝,通過插件形式俐筋,可以支持包括java、python严衬、C#澄者、go、scala请琳、kotlin粱挡、JavaScrip、Groovy等二十幾種編程語言的代碼質(zhì)量管理與檢測(cè)俄精。
下面使用docker 啟動(dòng)一個(gè) sonarqube , 便于快速體驗(yàn)此平臺(tái)提供的功能询筏。
二、安裝 SonarQube
你可以下載zip文件的傳統(tǒng)方式安裝SonarQube竖慧,也可以使用docker 鏡像的方式啟動(dòng) SonarQube容器嫌套。
1、 下載zip文件安裝SonarQube https://www.sonarqube.org/downloads/
- 下載上圖中的zip文件
- 解壓縮zip文件圾旨,例如在C:\ sonarqube或/ opt / sonarqube中
- 運(yùn)行下面的命令啟動(dòng) SonarQube Server
# 在windows中踱讨,執(zhí)行如下命令
C:\sonarqube\bin\windows-x86-64\StartSonar.bat
# 在linux等其他系統(tǒng)中執(zhí)行如下命令
/opt/sonarqube/bin/[OS]/sonar.sh console
2、使用docker 安裝 SonarQube
- 在docker hub 中找到 sonarqube
- 使用
docker pull sonarqube
拉取鏡像 - 運(yùn)行下面的命令啟動(dòng) SonarQube Server
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest
3砍的、登錄SonarQube Server
實(shí)例啟動(dòng)并運(yùn)行后痹筛,使用系統(tǒng)管理員憑據(jù)登錄到 http://localhost:9000
- 用戶名:admin
- 密碼:admin
登錄成功后需要重置密碼
三、分析項(xiàng)目
登錄成功后,如下圖所示:
1帚稠、安裝中文包
中文包安裝成功后如下圖
2谣旁、分析項(xiàng)目
-
單擊創(chuàng)建新項(xiàng)目按鈕。
image.png -
給您的項(xiàng)目一個(gè)項(xiàng)目鍵和一個(gè)顯示名稱滋早,然后單擊設(shè)置按鈕榄审。
image.png -
在“提供令牌”下,選擇“生成令牌”馆衔。為您的令牌命名瘟判,點(diǎn)擊生成按鈕怨绣,然后點(diǎn)擊繼續(xù)角溃。
image.png -
在“對(duì)項(xiàng)目運(yùn)行分析”下選擇項(xiàng)目的主要語言,然后按照說明分析項(xiàng)目篮撑。在這里减细,您將在代碼上下載并執(zhí)行掃描程序(如果您使用的是Maven或Gradle,則會(huì)自動(dòng)下載該掃描程序)赢笨。
image.png
使用Maven執(zhí)行SonarQube分析是非常簡(jiǎn)單的未蝌。只需要在你的項(xiàng)目目錄下執(zhí)行如下命令。
mvn sonar:sonar \
-Dsonar.projectKey=test \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=a98ea942c2c4bd02b1621ee26653fe1b7007d83d
分析完成后茧妒,頁面會(huì)自動(dòng)刷新萧吠,您將在SonarQube上看到第一個(gè)分析:
四、遇到的問題
執(zhí)行上面的mvn命令桐筏,出現(xiàn)如下問題:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.8.0.2131:sonar (default-cli) on project quarkus-demo: Your project contains .java files, please provide
compiled classes with sonar.java.binaries property, or exclude them from the analysis with sonar.exclusions property.
原因:項(xiàng)目只包含 .java 文件纸型,沒有編譯成 .class 文件
解決:需要編譯先項(xiàng)目,先執(zhí)行 mvn pakage
再執(zhí)行 mvn sonar: sonar
,也可以合并執(zhí)行下面的命令
mvn package sonar:sonar \
-Dsonar.projectKey=test \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=a98ea942c2c4bd02b1621ee26653fe1b7007d83d
參考文章
sonarqube 鏡像倉(cāng)庫(kù)地址
docker 啟動(dòng) sonarqube 官方文檔