白盒測試工具 - sonar的安裝、配置與使用入門手冊,用sonar檢查代碼質量實戰演示


安裝過程主要分爲兩部分,一個是主程序 sonarqube,一個是 sonarScanner 插件,兩個都安裝配置好後就可以進行代碼掃描了。sonarqube 在配置數據庫的過程中會碰到很多問題,第二章專門針對這些問題來進行講解。

第一章:sonarqube 的安裝與啓用

① sonarqube 獲取

下載地址: 官方網站
在這裏插入圖片描述

② sonarqube 配置

解壓後的程序目錄下,進入 conf 裏的 sonar.properties 來進行配置。
在這裏插入圖片描述

# 指定oracle數據庫
sonar.jdbc.url=jdbc:oracle:thin:@10.10.18.70:1521/orcl
# 指定數據庫用戶名
sonar.jdbc.username=ncc_auto_sonar 
# 指定數據庫密碼
sonar.jdbc.password=1
# 指定端口
sonar.web.port=9000

在這裏插入圖片描述

③ sonarqube 驅動放置

不要忘了把驅動放到
在這裏插入圖片描述

④ sonarqube 的啓動

StartSonar 來啓動程序,如果閃退了,可以拖到 cmd 裏運行,可以看到報錯信息,第二章就介紹它的一些常見報錯的解決方法。
在這裏插入圖片描述
然後再訪問 localhost:9000 就進來了。
在這裏插入圖片描述

第二章:sonarqube 報錯解決

① Unsupported JDBC driver provider: mysql. 【sonarqube8.0 以後不支持 mysql】

sonarqube8.0 以後不再支持 mysql,所以我用 oracle 來做適配。

jvm 1    | WrapperSimpleApp: Encountered an error running main: org.sonar.proces
s.MessageException: Unsupported JDBC driver provider: mysql
jvm 1    | org.sonar.process.MessageException: Unsupported JDBC driver provider:
 mysql
wrapper  | <-- Wrapper Stopped

在這裏插入圖片描述

② Directory does not contain JDBC driver: extensions/jdbc-driver/oracle. 【沒有找到驅動】

沒有配置數據庫驅動。extensions/jdbc-driver/oracle 下面沒有放驅動,或是驅動放的不對。

jvm 1    | WrapperSimpleApp: Encountered an error running main: org.sonar.proces
s.MessageException: Directory does not contain JDBC driver: extensions/jdbc-driv
er/oracle
jvm 1    | org.sonar.process.MessageException: Directory does not contain JDBC d
river: extensions/jdbc-driver/oracle
wrapper  | <-- Wrapper Stopped

在這裏插入圖片描述

③ SonarQube requires Java 11 to run. 【sonarqube8.0 需要 java11 的支持】

我原來用的版本是 java8 的。
在這裏插入圖片描述
運行時會提示要用 java11 來運行。

jvm 1    | WrapperSimpleApp: Encountered an error running main: java.lang.Illega
lStateException: SonarQube requires Java 11 to run
jvm 1    | java.lang.IllegalStateException: SonarQube requires Java 11 to run

在這裏插入圖片描述
java11 官網下載
在這裏插入圖片描述
安裝完後配置環境變量後就可以了。
在這裏插入圖片描述

④ 遠程主機強迫關閉了一個現有的連接。【sonarqube 數據庫驅動版本不匹配】

報這個錯感覺我的數據庫驅動版本不對,然後換了個驅動就好了。

jvm 1    | 2020.05.22 17:25:35 WARN  app[][o.e.t.TcpTransport] exception caught
on transport layer [Netty4TcpChannel{localAddress=/127.0.0.1:62245, remoteAddres
s=/127.0.0.1:9001}], closing connection
jvm 1    | java.io.IOException: 遠程主機強迫關閉了一個現有的連接。

在這裏插入圖片描述
然後再訪問 localhost:9000 就進來了。
在這裏插入圖片描述

⑤ 查看 sonarqube 的數據庫支持

配置文檔裏有很多的幫助,我直接搜 oracle 就能查看 oracle 的支持了,還有下面說的驅動放置方法,以及更下面的官方支持網站,如果還有其它的問題,興許就能在裏面找到問題的解決方法。
在這裏插入圖片描述

第三章:sonarScanner 插件的安裝與配置

① sonarScanner 獲取

獲取地址:官網下載
下載完後解壓即可。
在這裏插入圖片描述

② sonarScanner 設置環境變量

我們把它根目錄下面的 bin 文件夾加入環境變量。
在這裏插入圖片描述
在這裏插入圖片描述
cmd 裏輸入 sonar-scanner -h 可以看有沒有配置對。
在這裏插入圖片描述

③ sonarScanner 配置

在這個配置文件夾裏的配置文件進行配置。
在這裏插入圖片描述
還是跟前面 sonarqube 的數據庫配置一樣。

# 指定oracle數據庫
sonar.jdbc.url=jdbc:oracle:thin:@10.10.18.70:1521/orcl
# 指定數據庫用戶名
sonar.jdbc.username=ncc_auto_sonar 
# 指定數據庫密碼
sonar.jdbc.password=1

在這裏插入圖片描述

第四章:用 sonar 檢查代碼質量

① 配置

在要檢查代碼的地方建個這個配置文件 sonar-project.properties
在這裏插入圖片描述
sonarScanner 官網 給的配置方法。
在這裏插入圖片描述

# must be unique in a given SonarQube instance
sonar.projectKey=my:project

# --- 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-scanner 命令就可以掃描了。
在這裏插入圖片描述
掃描成功標誌。
在這裏插入圖片描述
掃描過程詳細信息。

C:\Users\Administrator\Desktop\XpathRobot>sonar-scanner
INFO: Scanner configuration file: D:\server\sonar\sonar-scanner-4.3.0.2102-windo
ws\bin\..\conf\sonar-scanner.properties
INFO: Project root configuration file: C:\Users\Administrator\Desktop\XpathRobot
\sonar-project.properties
INFO: SonarScanner 4.3.0.2102
INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
INFO: Windows 7 6.1 amd64
INFO: User cache: C:\Users\Administrator\.sonar\cache
INFO: Scanner configuration file: D:\server\sonar\sonar-scanner-4.3.0.2102-windo
ws\bin\..\conf\sonar-scanner.properties
INFO: Project root configuration file: C:\Users\Administrator\Desktop\XpathRobot
\sonar-project.properties
INFO: Analyzing on SonarQube server 8.2.0
INFO: Default locale: "zh_CN", source code encoding: "GBK" (analysis is platform
 dependent)
INFO: Load global settings
INFO: Load global settings (done) | time=205ms
INFO: Server id: 02A721FB-AXJaPgmVryaM9Bas_OmF
INFO: User cache: C:\Users\Administrator\.sonar\cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load plugins index (done) | time=161ms
INFO: Load/download plugins (done) | time=3743ms
INFO: Process project properties
INFO: Process project properties (done) | time=1ms
INFO: Execute project builders
INFO: Execute project builders (done) | time=5ms
INFO: Project key: my:project
INFO: Base dir: C:\Users\Administrator\Desktop\XpathRobot
INFO: Working dir: C:\Users\Administrator\Desktop\XpathRobot\.scannerwork
INFO: Load project settings for component key: 'my:project'
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=305ms
INFO: Load active rules
INFO: Load active rules (done) | time=3550ms
WARN: SCM provider autodetection failed. Please use "sonar.scm.provider" to defi
ne SCM of your project, or disable the SCM Sensor in the project settings.
INFO: Indexing files...
INFO: Project configuration:
INFO: 21 files indexed
INFO: Quality profile for py: Sonar way
INFO: Quality profile for web: Sonar way
INFO: ------------- Run sensors on module my:project
INFO: Load metrics repository
INFO: Load metrics repository (done) | time=116ms
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by net.sf.cglib.core.ReflectUtils$1 (file:/C:
/Users/Administrator/.sonar/cache/54f6535c111cefad0fb6a09ba3e61922/sonar-javascr
ipt-plugin.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byt
e[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of net.sf.cglib.core.
ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflect
ive access operations
WARNING: All illegal access operations will be denied in a future release
INFO: Sensor Python Sensor [python]
INFO: Starting global symbols computation
INFO: 3 source files to be analyzed
INFO: Load project repositories
INFO: Load project repositories (done) | time=14ms
INFO: Starting rules execution
INFO: 3 source files to be analyzed
INFO: 3/3 source files have been analyzed
INFO: Sensor Python Sensor [python] (done) | time=1481ms
INFO: Sensor Cobertura Sensor for Python coverage [python]
INFO: 3/3 source files have been analyzed
INFO: Sensor Cobertura Sensor for Python coverage [python] (done) | time=23ms
INFO: Sensor PythonXUnitSensor [python]
INFO: Sensor PythonXUnitSensor [python] (done) | time=11ms
INFO: Sensor SonarCSS Rules [cssfamily]
INFO: 1 source files to be analyzed
INFO: 1/1 source files have been analyzed
INFO: Sensor SonarCSS Rules [cssfamily] (done) | time=14364ms
INFO: Sensor JaCoCo XML Report Importer [jacoco]
INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=4ms
INFO: Sensor JavaXmlSensor [java]
INFO: Sensor JavaXmlSensor [java] (done) | time=2ms
INFO: Sensor HTML [web]
INFO: Sensor HTML [web] (done) | time=150ms
INFO: ------------- Run sensors on project
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor (done) | time=48ms
INFO: SCM Publisher No SCM system was detected. You can use the 'sonar.scm.provi
der' property to explicitly specify it.
INFO: CPD Executor 1 file had no CPD blocks
INFO: CPD Executor Calculating CPD for 3 files
INFO: CPD Executor CPD calculation finished (done) | time=15ms
INFO: Analysis report generated in 106ms, dir size=214 KB
INFO: Analysis report compressed in 99ms, zip size=52 KB
INFO: Analysis report uploaded in 1527ms
INFO: ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard?id=my%
3Aproject
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://localhost:9000/api/ce/task?id=A
XJeUNiUryaM9Bas_RCa
INFO: Analysis total time: 25.030 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 32.540s
INFO: Final Memory: 13M/50M
INFO: ------------------------------------------------------------------------

③ 查看掃描報告

刷新後就能看到掃描後的結果了!
在這裏插入圖片描述

④ 分析報告問題

點進 bug 裏可以看到很多問題。
在這裏插入圖片描述
點擊 Why is this an issue? 可以查看問題原因,點擊整個粉色的部分可以追蹤到代碼。
在這裏插入圖片描述

⑤ 代碼質量評級

點擊 quality gates 可以查看代碼質量的綜合評分。
在這裏插入圖片描述
喜歡的點個贊❤吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章