jenkins与sonar集成自动化代码质量检查

安装jenkins,mysql:省略

安装sonar

mysql创建数据库user并授权(测试可以使用自带数据库)

1
2
3
4
>CREATE DATABASE sonarqube SET utf8 COLLATE utf8_general_ci;
> CREATE USER 'sonar’@'%' IDENTIFIED BY 'password';
> GRANT all privileges ON sonarqube.* TO sonar’@‘%' IDENTIFIED BY 'password';

> flush privileges;

下载安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.zip
unzip sonarqube-6.7.zip -d /usr/local/
cd /usr/local/sonarqube-6.7/
vim conf/sonar.properties /配置文件
sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.jdbc.username=sonar
sonar.jdbc.password=password
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
./bin/linux-x86-64/sonar.sh start 启动sonar 需要使用非root启动
中文插件下载解压到下目录
wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.18/sonar-l10n-zh-plugin-1.18.jar
/usr/local/sonarqube-6.7/extensions/plugins/
./bin/linux-x86-64/sonar.sh restart

安装sonar-runner

下载安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
unzip sonar-runner-dist-2.4.zip -d /usr/local/
cd /usr/local/sonar-runner-dist-2.4
vim conf/sonar-runner.properties
sonar.host.url=http://172.18.8.32:9000
sonar.sourceEncoding=UTF-8
sonar.login=admin
sonar.password=admi
配置环境配置
vim /etc/profile
export SONAR_HOME=/usr/local/sonarqube-6.7
PATH=$PATH:/usr/local/sonar-runner-2.4/bin
export PATH
source /etc/profile
测试ok
sonar-scanner -h

github下载一个提供测试项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
git clone https://github.com/SonarSource/sonar-scanning-examples.git
cd sonar-scanning-examples/sonarqube-scanner
如果是直接在linux客服端测试需要在代码根目录创建sonar-project.properties文件
cat sonar-project.properties
sonar.projectKey=org.sonarqube:sonarqube-scanner
sonar.projectName=Example of SonarQube Scanner Usage
sonar.projectVersion=1.0
sonar.sources=src,copybooks
sonar.sourceEncoding=UTF-8
## Cobol Specific Properties
# comma-separated paths to directories with copybooks
sonar.cobol.copy.directories=copybooks
# comma-separated list of suffixes
sonar.cobol.file.suffixes=cbl,cpy
sonar.cobol.copy.suffixes=cpy
## Flex Specific Properties
# retrieve code coverage data from the Cobertura report
sonar.flex.cobertura.reportPath=coverage-report/coverage-cobertua-flex.xml
# PL/I Specific Properties
sonar.pli.marginLeft=2
sonar.pli.marginRight=0

在源代码根目录执行 sonar-runner -X 测试成功

jenkins
访问http://ip:9000查看结果
jenkins
ok现在sonar环境配置好

设置jenkins+sonar自动化

安装插件

SonarQube Scanner for Jenkins
jenkins

jenkins设置sonar路径

jenkins

jenkins上配置sonar的信息

这里可以在sonarweb界面生成使用token
jenkins

项目里面配置sonar

1
2
3
4
5
6
7
sonar.projectKey=java-api //key需要唯一
sonar.projectName=java-api //项目名称
sonar.projectVersion=4.3 //版本
sonar.sources=src //源码路径
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.java.binaries=target/classes

jenkins

构建

jenkins
jenkins
jenkins
sonar.java.binaries报错参考:
https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode
如:
sonar.java.test.libraries=path/to/specific/Library.jar,path/to/libs/.jar,directory/**/.jar