SonarQube与Jenkins集成对代码进行质量分析

  作者:会飞的zxl

SonarQube 是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。

同时,它提供了丰富的插件,支持多种语言的检测, 如 Java、Python、Groovy、C、C++等几十种编程语言的检测。

它主要的核心价值体现在如下几个方面:

检查代码是否遵循编程标准:如命名规范,编写的规范等。 检查设计存在的潜在缺陷:SonarQub e 通 过插 件 F indbugs、Checkstyl e 等 工具检测代码存在的缺陷。 检测代码的重复代码量:SonarQub e 可 以展示项目中存在大量复制粘贴的代码。 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。 SonarQub e 平 台是 由 4 个 部分组成:

SonarQube Server SonarQube Database SonarQube Plugins SonarQube Scanner

官网地址

官方文档

基础配置需求:

内存:至少2GB


磁盘:高级SSD

JDK:8数据库:mysql5.6/mysql5.7

安装配置步骤:

#安装数据库useradd mysql

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gztar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysqlchown -R mysql.mysql /usr/local/mysql
 
 #初始化数据库/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql_data --initializecp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig mysqld on
ln -s /usr/local/mysql/bin/mysql /usr/bin/
 
 #创建数据库及用户create database sonar;
alter privileges all on sonar.* to 'sonar'@'localhost' identified by 'password';
flush privileges; 
 
#同步时区cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
 #安装sonarqubeuseradd sonarqube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zipunzip sonarqube-6.7.6.zip
mv /usr/local/src/sonarqube-6.7.6 /opt/chown -R sonarqube.sonarqube /opt/sonarqube-6.7.6/su sonarqube -c "/opt/sonarqube-6.7.6/bin/linux-x86-64/sonar.sh start"
 
 #安装scannerwget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zipunzip sonar-scanner-cli-3.2.0.1227-linux.zip
mv /usr/local/sonar-scanner-3.2.0.1227-linux/ /usr/local/sonar-scanner#配置环境变量export PATH=/usr/local/sonar-scanner/bin:$PATH#配置文件#sonarqube服务器配置[root@sonarqube-pro opt]# cat /opt/sonarqube-6.7.6/conf/sonar.properties | grep -v "#" | grep -v "^$"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=falsesonar.jdbc.maxActive=60
sonar.jdbc.maxIdle=5
sonar.jdbc.minIdle=2
sonar.jdbc.maxWait=5000
sonar.jdbc.minEvictableIdleTimeMillis=600000
sonar.jdbc.timeBetweenEvictionRunsMillis=30000
sonar.web.javaOpts=-Xmx3072m -Xms3072m -XX:+HeapDumpOnOutOfMemoryError
sonar.web.host=0.0.0.0
sonar.web.port=9000

#jenkins scanner的配置

root@jenkins:/usr/local/sonar-scanner/conf# cat sonar-scanner.properties | grep -v "^$" | grep -v "#" sonar.host.url=http://sonarserver:9000

jenkins集成步骤:

1 sonarqube服务启动后,打开页面,获取token

2 在“系统管理”--“系统设置”找到SonarQube servers,配置地址,在“Server authentication token”配置token,然后保存

3 在“系统管理”--“全局工具配置”–“SonarQube Scanner”

4 对应项目构建配置