SonarQube 是一套白箱掃描工具,本例使用開源免費的Community版 本,有關安裝方式可參考「在KALI Linux建置黑、白箱掃描系統(Arachni及SonarQube)」
本文以SonarQube提供的範例「 sonar-scanning-examples-master\onarqube-scanner-maven\maven-multilingual 」做示範說明,若想掃描其他maven專案,請依該專案環境、結構酌作調整,尤其工具及Java版本。
一、必要需求
(一)maven
到 Apache Maven Project 下載合適版本的Maven(本例使用 maven-3.9.0),並解壓縮到自選目錄,例如「C:\maven\apache-maven-3.9.0」。
建立環境變數「M2_HOME」指向「C:\maven\apache-maven-3.9.0」。
在 PATH 環境變數中加入「%M2_HOME%\bin」,讓作業系統可以找得到mvn.exe。
(二)適合待掃專案的JDK
本例使用Java 11,位於C:\JAVA\jdk-11.0.2。
二、修改待掃專案的pom.xml,加入sonar scanner:
如果不想修改待掃專案的POM.XML,可參考「三、執行掃描」的第(四)點。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<!-- 以下為SonarQube而建 -->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.9.1.2184</version>
</plugin>
這裡可查詢各個版本的sonar scanner插件,請選擇合適的版本,本例是使用 3.9.1.2184。
三、執行掃描:
(一)啟動SonarQube Scanner Server,假設位於「 http://192.168.232.153:9000」
(二)以瀏覽器連線SonarQube Scanner Server,並建立掃描專案(如重掃描舊專案,請備妥 Project Token)
1. 由Projects頁面選擇「Create Project」->「Manually」
2.社群版只能選擇「Locally」
3.填入「Project display name」(專案名稱)及「Project key」(專案鍵名)
4.產生Project Token(專案身份代號)
5.請記下Project Token
6.選擇要被掃描的專案類型(Maven)
(三)開啟命令提示字元,將工作目錄切換到待掃描的Maven專案目錄,本例使用sonar-scanning-examples-master的sonarqube-scanner-msbuild專案做示範,下載後置於C:\sonar-scanning-examples-master\sonarqube-scanner-msbuild。
(四)如果已完成項一及項二的要求,便可直接複製及執行SonarQube所提供的命令。
由於此命令是Linux格式,本例是在Windows環境執行,需調整命令語句,將原始命的整理成單一列:
(五)若想靈活切換SDK版本,可以在開啟命令提示字元後,依續執行:
C:\>set path=%JAVA_HOME%\bin;%PATH% #加在前面,確保被優先引用
C:\>cd c:\sonar-scanning-examples-master\sonarqube-scanner-msbuild
C:\sonar-scanning-examples-master\sonarqube-scanner-msbuild>mvn clean verify sonar:sonar -Dsonar.projectKey=Examp-Maven-A -Dsonar.host.url=http://192.168.232.129:9000 -Dsonar.login=sqp_dba30fef39a3676dd2c2bba4ae197d96ae58aa03
或者
C:\sonar-scanning-examples-master\sonarqube-scanner-msbuild>mvn clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar -Dsonar.projectKey=Examp-Maven-A -Dsonar.host.url=http://192.168.232.129:9000 -Dsonar.login=sqp_dba30fef39a3676dd2c2bba4ae197d96ae58aa03
(六)執行過程如下所示(橘紅色部分是我所執行的命令)
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
C:\>cd sonar-scanning-examples-master\sonarqube-scanner-maven\maven-multimodule
C:\sonar-scanning-examples-master\sonarqube-scanner-maven\maven-multimodule>mvn clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar -Dsonar.projectKey=Examp-Maven-A -Dsonar.host.url=http://192.168.232.129:9000 -Dsonar.login=sqp_dba30fef39a3676dd2c2bba4ae197d96ae58aa03
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Example of multi-module Maven project [pom]
[INFO] Module 1 [jar]
[INFO] Module 2 [jar]
[INFO] Tests [jar]
<<部分訊息省略>>
[INFO] ANALYSIS SUCCESSFUL, you can find the results at: http://192.168.232.129:9000/dashboard?id=Examp-Maven-A
[INFO] Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
[INFO] More about the report processing at http://192.168.232.129:9000/api/ce/task?id=AYrZSjAxVbRR_GlSxZsf
[INFO] Analysis total time: 7.571 s
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Example of multi-module Maven project 1.0-SNAPSHOT:
[INFO]
[INFO] Example of multi-module Maven project .............. SUCCESS [ 9.495 s]
[INFO] Module 1 ........................................... SUCCESS [ 6.353 s]
[INFO] Module 2 ........................................... SUCCESS [ 1.566 s]
[INFO] Tests .............................................. SUCCESS [ 1.851 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 23.218 s
[INFO] Finished at: 2023-09-28T08:57:11+08:00
[INFO] ------------------------------------------------------------------------
C:\sonar-scanning-examples-master\sonarqube-scanner-maven\maven-multimodule>
如果前面各步驟無誤,應該可以完成掃描,最後會看到「EXECUTION SUCCESS」。如果過程出現錯誤,請仔細研讀訊息,善用Google或ChatGPT找出解答。
完成掃描後,可在SonarQube Scanner Web UI看到專案結果~~
完成掃描後,可在SonarQube Scanner Web UI看到專案結果~~
關於 dotNet Framework 專案的掃描,請參閱:以SonarQube執行.netFramework專案的源碼掃描(白箱掃描)
關於 dotNet Core 專案的掃描,請參閱:以SonarQube掃描dotNet Core專案源碼(白箱掃描)
沒有留言:
張貼留言