目錄
-
-
-
-
- 下載下傳sonarqube安裝包
- java環境依賴
- 再次嘗試啟動 sonarqube
- 安裝sonarscanner
- 統計單元測試覆寫率
- 在127.0.0.1:9000中檢視代碼覆寫率 Coverage
-
-
-
下載下傳sonarqube安裝包
從官網 https://docs.sonarqube.org/latest/setup/get-started-2-minutes/ 下載下傳 安裝包,選擇From the zip file 安裝sonarqube,按照指引1,2,3步,嘗試啟動,一般情況下第一次是啟動不起來的,看一下啟動日志,通常是缺少java環境導緻,是以繼續安裝java。
java環境依賴
繼續閱讀官網文檔https://docs.sonarqube.org/latest/requirements/requirements/ 找到環境依賴部分, 發現環境依賴sonarqube和scanner共同依賴的是 11版本,這裡我選擇了 OpenJDK 11,(資料庫預設是内置的H2,這裡不再另外配置)。
安裝openjdk11 并配置環境變量。https://jdk.java.net/java-se-ri/11 選擇對應版本下載下傳壓縮檔案,解壓到相應目錄。配置環境變量
sudo vim /etc/profile
在檔案最後添加如下内容
export JAVA_HOME=/openjdk-11+28_linux-x64_bin/jdk-11
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
指令行執行 java -version 輸入如下内容表示成功
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
再次嘗試啟動 sonarqube
出現如下内容時啟動成功。
jvm 1 | 2021.03.22 17:24:20 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
jvm 1 | 2021.03.22 17:24:20 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
通路 127.0.0.1:9000 預設使用者名密碼admin admin 登陸成功,然後在Administration–>Security中 生成使用者token并記錄下來 配置到系統環境變量中
export SONAR_TOKEN=178f14927e9f32a140586a*********
安裝sonarscanner
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ 選擇對應版本下載下傳,這裡我選linux 64-bit壓縮檔案,然後在工程根目錄下添加檔案:sonar-project.properties(這一步可選),主要目的是有這一行内容
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
由于我下載下傳的是壓縮檔案類型,是以按文檔 Running SonarScanner from the zip file 的内容嘗試執行sonar-scanner.
先解壓檔案,然後确認配置檔案conf/sonar-scanner.properties 中的sonarqube server是指向了本地(這個預設就是本地,可以跳過)
然後配置軟連結到 /usr/local/bin 目錄下以使可以在任何目錄下執行sonar-scanner指令,等同于配置環境變量PATH,因為你執行 echo $PATH 會發現path路徑第一條就是 /usr/local/bin 是以把程式可執行檔案連結到 /usr/local/bin就等于實作了path配置。
ln -s 目标檔案 /usr/local/bin
在指令執行 sonar-scanner -h 看到如下輸出表示sonar-scanner安裝成功
usage: sonar-scanner [options]
Options:
-D,--define <arg> Define property
-h,--help Display help information
-v,--version Display version information
-X,--debug Produce execution debug output
然後在項目目錄下執行 sonar-scanner -Dsonar.login=SONAR_TOKEN 檢視代碼分析結果,這裡的 SONAR_TOKEN 就是在第4步配置的環境變量
統計單元測試覆寫率
在項目根目錄下執行
go test --count=1 -coverprofile=coverage.out -json ./... > report.json
–count=1 : 通過使用一個不在“可緩存參數”集合中的參數來禁用緩存
sonar-scanner -Dsonar.projectKey=webgoclient -Dsonar.inclusions=**/*.go -Dsonar.exclusions=**/*_test.go -Dsonar.go.coverage.reportPaths=coverage.out -Dsonar.go.tests.reportPaths=report.json -Dsonar.login=$SONAR_TOKEN
指令行帶參數 -Dsonar.projectKey=projectKey 的話就可以不用增加第5步的sonar-project.properties檔案,保證 projectKey唯一即可。檢視指令執行詳情可能會出現 WARN: Failed to find test file for package 這類的警報,這個暫時沒法解決,選擇忽略。