配置SonarQube、Jenkins进行代码检查
本文以Ubuntu操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd、checkstyle、findbugs等工具对代码进行持续审查。
SonarQube 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。 与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
Sonarqube分为两个部分:服务器端和客户端。其中服务器端为一个Web系统,用来展示扫描的结果;客户端是一个扫描工具,用来扫描源码,并上传到服务器端。
SonarQube Server 安装配置
从https://www.sonarqube.org/downloads/ 下载最新的SonarQube工具,解压到相应位置,美其名曰${sonarqube}
1、创建数据库——MYSQL
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
2、修改${sonarqube}/conf/sonar.properties数据库配置
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
下载mysql数据库链接文件mysql-connector-java-5.1.41.jar,将其复制到${sonarqube}/extensions/jdbc-driver/mysql文件夹下。
3、修改sonarqube服务端口
vi ${sonarqube}/conf/sonar.properties
sonar.web.port=9000 #默认是9000,可以根据自己的需要进行修改
4、插件安装
5、启动sonarqube服务
cd ${sonarqube}/bin/linux-x86-64
./sonar.sh
这是在浏览器中打开:http://localhost:9000/,就打开web页,内置用户为admin,默认密码admin。第一次加载会花费一些时间,因为会往sonar数据库中建表并导入一下数据。
SonarQube Scanner 安装配置
1、修改配置
vi ${SonarqubeScanner}/conf/sonar-scanner.properties
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
Jenkins的配置 1、安装插件 在“系统管理”——“管理插件”——“可选插件”中选择需要安装的插件。
Sonar Gerrit Plugin
Sonargraph Integration Jenkins Plugin
Sonargraph Plugin
SonarQube Scanner for Jenkins
2、配置SonarQube Server
a、管理员身份登录到jenkins,“系统管理”——“系统设置”
b、在“SonarQube Server”中,选择“Add SonarQube”,添加相应的配置
比如
Name:localhost_sonar
Server URL:http://localhost:9000/
Server authentication toke: #Server中“My Account”,“Security”自己生成。
3、配置SonarQube Scanner
a、管理员身份登录到jenkins,“系统管理”——“Global Tool Configuration”
b、在“SonarQube Scanner”中,选择“新增SonarQube Scanner”,配置扫描工具的安装位置。
比如:
Name:localhost_sonar_scanner
SONAR_RUNNER_HOME:${SonarqubeScanner}
不勾选“自动安装”
4、配置jenkinsjob
新建Jenkins Job,在“增加构建步骤”中,选择“Execute SonarQube Scanner”.
在“Analysis properties”中添加如下内容:
sonar.projectKey=915c43ea5c1846120d94a4465ba10a6be52b1695 #server中project的key,用于将扫描结果上传到对应的项目中去,建project中的必填项。
sonar.sources=${SonarqubeScanner}/src/test #需要扫描分析的代码的路径
启动构建,就会自动扫描在${SonarqubeScanner}/src/test中的代码
需要注意的是,这个代码路径最好在jenkins job的${WOORKSPACE}下面,不然扫描不出来结果。