jenkins+sonar 代码质量分析

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。

安装前准备

  1. Centos 7.1 ,已关闭 iptables、selinux
  2. 内网gitlab部署,推荐文章: 搭建内网gitlab仓库
  3. 安装JDK1.8(这里就暂不演示)
  4. jenkins部署,推荐文章:
  5. 安装MySQL数据库(推荐版本5.6+)

sonarqube 安装

下载安装包

官网: https://www.sonarqube.org/downloads/
1
2
3
4
cd /tmp
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.6.zip
mkdir /usr/local/sonar
unzip /tmp/sonarqube-5.6.6.zip -d /usr/local/sonar

配置sonar启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vim /etc/init.d/sonar
#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*

1
2
3
chmod +x /etc/init.d/sonar
ln -s /usr/local/sonar/sonarqube-5.6.6/bin/linux-x86-64/sonar.sh /usr/sbin/sonar
chkconfig sonar on

数据库配置

1
2
3
4
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'127.0.0.1' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

配置sonar参数

1
2
3
4
5
6
7
8
cd /usr/local/sonar/sonarqube-5.6.6/conf
cp sonar.properties{,.bak}
vim sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://10.204.220.4:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
# 这里我只修改了以上3项,其他配置修改请参考 https://docs.sonarqube.org/display/SONAR/Installing+the+Server

安装SonarQube Scanner

下载地址: https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/
1
2
3
4
5
6
7
8
9
10
11
cd /tmp
wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.8.zip
unzip sonar-scanner-2.8.zip -d /usr/local/sonar/
ln -s /usr/local/sonar/sonar-scanner-2.8/bin/sonar-scanner /usr/bin/sonar-scanner
cd /usr/local/sonar/sonar-scanner-2.8/conf
cp sonar-scanner.properties{,.bak}
vim sonar-scanner.properties
sonar.jdbc.url=jdbc:mysql://10.204.220.4:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=sonar
sonar.jdbc.password=123456

安装SonarQube runner

下载地址: http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/
1
2
3
4
5
6
7
8
9
10
11
cd /tmp
wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
unzip /tmp/sonar-runner-dist-2.4.zip -d /usr/bin/sonar
ln -s /usr/local/sonar/sonar-runner-2.4/bin/sonar-runner /usr/bin/sonar-runner
cd /usr/local/sonar/sonar-runner-2.4/conf
cp sonar-runner.properties{,.bak}
vim sonar-runner.properties
sonar.jdbc.url=jdbc:mysql://10.204.220.4:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=sonar
sonar.jdbc.password=123456

添加环境变量

1
2
3
4
5
6
vim /etc/profile.d/sonar.sh
export SONAR_HOME=/usr/local/sonar/sonarqube-5.6.6
export SONAR_RUNNER_HOME=/usr/local/sonar/sonar-runner-2.4
export PATH=$SONAR_RUNNER_HOME/bin:$PATH
. /etc/profile.d/sonar.sh

启动sonar

1
2
3
4
/usr/sbin/sonar start
/usr/sbin/sonar status
# 需要等 2-3 分钟, 首次启动需要稍等一下
ss -tanlp | grep 9000

安装必备插件


这里我们去更新中心可以安装中文包,点击查找安装即可

这里我安装的插件:

  1. chinese 中文支持
  2. php php代码支持
  3. Android Android支持

安装成功后,重启 sonarqube 服务,再次访问 http://ip:9000/ 即可看到中文界面

集成jenkins配置

设置sonar 中 token

用 admin 用户登陆 sonarQube,【配置】–>【权限】 –>【用户】

输入admin,得到token,复制此token

jenkins安装sonar相关插件

打开jenkins 【系统管理】–> 【管理插件】 查找 sonar 相关所有插件

这里因为我之前都安装过,所以就没有显示相关插件,全部安装即可

Jenkins配置Sonar插件

点击【系统管理】 –> 【系统设置]】 配置 Sonar,设置完保存

配置 Sonar Scanner扫描器

点击【系统管理】 –> 【Global Tool Configuration】

整合测试


在jenkins中新建一个测试项目,其中的jenkins配置段详情参考我的jenkins部署
这里增加一个构建后操作


1
2
3
4
5
6
7
sonar.projectKey=demo
sonar.projectName=java demo
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=java
sonar.dynamicAnalysis=false
sonar.sourceEncoding=UTF-8

基本jenkins 结合 sonar 的配置完成了。

火柴 wechat
扫描上方二维码关注我的博客!
0%