White box testing tool-Sonar installation, configuration and usage manual, use sonar to check code quality practical demonstration


The installation process is mainly divided into two parts, one is the main program sonarqube , and the other is the sonarScanner plug-in. After both are installed and configured, the code scan can be performed. Sonarqube will encounter many problems in the process of configuring the database. The second chapter is devoted to these problems.

Chapter 1: Installation and activation of sonarqube

① sonarqube acquisition

Download link : official website
Insert picture description here

② Sonarqube configuration

After extracting the program directory, enter the conf in the sonar.properties be configured.
Insert picture description here

# 指定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

Insert picture description here

③ Sonarqube drive placement

Don’t forget to put the driver on
Insert picture description here

④ The start of sonarqube

Use StartSonar to start the program, if it crashes , you can drag it to cmd to run, you can see the error message, Chapter 2 introduces some of its common error solutions.
Insert picture description here
Then visit localhost:9000 to come in.
Insert picture description here

Chapter 2: Sonarqube Error Resolution

① Unsupported JDBC driver provider: mysql. [mysql is not supported after sonarqube8.0]

Sonarqube 8.0 will no longer support mysql , so I use oracle for adaptation.

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

Insert picture description here

② Directory does not contain JDBC driver: extensions/jdbc-driver/oracle. [Driver not found]

No database driver is configured. There is no driver under extensions/jdbc-driver/oracle , or the driver is incorrect.

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

Insert picture description here

③ SonarQube requires Java 11 to run. [sonarqube8.0 requires java11 support]

The original version I used was java8 .
Insert picture description here
When running, it will prompt to use java11 to run.

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

Insert picture description here
Download from the official website of java11
Insert picture description here
After installation, you can configure the environment variables.
Insert picture description here

④ The remote host forcibly closed an existing connection. [Sonarqube database driver version does not match]

Reporting this error feels that my database driver version is wrong, and then just change the driver.

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: 远程主机强迫关闭了一个现有的连接。

Insert picture description here
Then visit localhost:9000 to come in.
Insert picture description here

⑤ View the database support of sonarqube

There is a lot of help in the configuration document. I can search Oracle directly to check the support of Oracle , as well as the driver placement method mentioned below, and the official support website below. If there are other questions, you may be able to find it in it. The solution to the problem.
Insert picture description here

Chapter 3: Installation and Configuration of SonarScanner Plug-in

① Obtained by sonarScanner

Obtain the address: download from the official website and
unzip after downloading.
Insert picture description here

② SonarScanner sets environment variables

We add the bin folder under its root directory to the environment variable. Enter sonar-scanner -h in
Insert picture description here
Insert picture description here
cmd to see if the configuration is correct .
Insert picture description here

③ SonarScanner configuration

Configure in the configuration file in this configuration folder.
Insert picture description here
Still the same as the previous sonarqube database configuration.

# 指定oracle数据库
sonar.jdbc.url=jdbc:oracle:thin:@10.10.18.70:1521/orcl
# 指定数据库用户名
sonar.jdbc.username=ncc_auto_sonar 
# 指定数据库密码
sonar.jdbc.password=1

Insert picture description here

Chapter 4: Check code quality with sonar

① Configuration

Create this configuration file sonar-project.properties where you want to check the code . The configuration method given by
Insert picture description here
sonarScanner official website .
Insert picture description here

# 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

Insert picture description here

② Operation

Enter the sonar-scanner command in the directory where the configuration file is placed to scan.
Insert picture description here
Scanning success sign.
Insert picture description here
Details of the scanning process.

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: ------------------------------------------------------------------------

③ View the scan report

After refreshing, you can see the results after scanning!
Insert picture description here

④ Analysis and report problems

Click into the bug to see many problems.
Insert picture description here
Click Why is this an issue? to view the cause of the problem, and click the entire pink part to trace the code.
Insert picture description here

⑤ Code quality rating

Click on quality gates to view a comprehensive score of code quality.
Insert picture description here

Chapter 5: Sonar related settings

① Sonar administrator login

The sonar administrator logs in.
Insert picture description here
The administrator account and password are both admin
Insert picture description here

② Sonar settings

The administrator can see the settings tab only after logging in.
Insert picture description here
Like it if you like it ❤!

Guess you like

Origin blog.csdn.net/qq_38161040/article/details/105733652