一、简要说明
Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果
- Sonarqube集成在Maven实现代码检测
- 使用sonar-scanner客户端的方式
二、Sonarqube管理后台安装中文插件
1、登录Sonarqube管理后台
示例:http://192.168.95.131:9010/
2、同意协议,安装中文插件
3、安装完成之后,重启Sonarqube服务
三、Maven实现代码检测
1、修改Maven的setting.xml文件配置,增加Sonarqube相关信息
<profile><id>sonar</id><activation><activeByDefault>true</activeByDefault></activation><properties><sonar.login>admin</sonar.login><sonar.password>123456789</sonar.password><sonar.host.url>http://192.168.95.131:9010</sonar.host.url></properties>
</profile>
2、配置好,重新再工程同步Maven依赖信息
3、使用Maven命令对工程进行代码质量检测
$ mvn sonar:sonar
4、登录Sonarqube的管理后台,查看代码质量检测报告
5、可以点击查看具体检测信息
四、Sonar-Scanner实现代码检测
1、Sonar-Scanner官方文档
SonarScanner CLIThe SonarScanner CLI is the scanner to use when there is no specific scanner for your build system.https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
2、下载Sonar-Scanner
3、上传Sonar-Scanner到服务器
4、安装unzip,并解压Sonar-Scanner zip安装包
# 安装unzip
$ yum -y install unzip# 进入到sonar-scanner安装包存放的目录
$ cd /data/soft# 解压 sonar-scanner zip安装包
$ unzip sonar-scanner-cli-4.7.0.2747-linux.zip
5、移动Sonar-Scanner解压的文件夹到/usr/local/sonar-scanner目录
$ mv sonar-scanner-4.7.0.2747-linux /usr/local/sonar-scanner
6、配置sonar-scanner服务端信息
# 进入sonar-scanner配置文件目录
$ cd /usr/local/sonar-scanner/conf/# 配置sonarqube相关信息
$ vi sonar-scanner.properties
7、把sonar-scanner挂载到Jenkins Docker的文件卷
7.1、修改Jenkins docker-compose.yml文件
# 进入Jenkins的安装目录
$ cd /usr/local/deploy/jenkins/# 编辑 docker-compose.yml
$ docker-compose.yml
7.2、重新启动Jenkins docker服务
$./docker-compose-restart.sh
8、执行命令检查代码
8.1、在Sonarqube管理生成一个扫码用的用户登录授权token
sonar-scanner 命令中
-Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd
使用
8.2、使用sonar-scanner检测代码质量
-Dsonar.sources
:被扫码的源码目录-Dsonar.projectname
:项目名称-Dsonar.projectKey
:项目key,一般与项目名称一致即可-Dsonar.java.binaries
:项目编译后的字节码-Dsonar.login
:Sonarqube用户登录授权token
# 进入需要扫码的工程目录
$ cd /usr/local/deploy/jenkins/jenkins-data/workspace/jenkins-publish-demo# 使用sonar-scanner命令检测代码质量
$ /usr/local/sonar-scanner/bin/sonar-scanner \-Dsonar.sources=./ \-Dsonar.projectname=jenkins-publish-demo-linux \-Dsonar.projectKey=jenkins-publish-demo-linux \-Dsonar.java.binaries=./target/ \-Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd