7.3 Sonar Qube基本使用
Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果
7.3.1 Sonar-scanner实现代码检测
- 下载Sonar-scanner压缩包:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
下载4.6.x版本即可,要求Linux版本
- 解压并配置sonar服务端信息
① 由于是zip压缩包,需要安装unzip解压插件
yum -y install unzip
②解压压缩包
unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
③改名并移动/usr/local/docker/jenkins_docker/data/
下
cd mv sonar-scanner-4.6.1.2450-linux/ sonar-scanner mv sonar-scanner /usr/local/docker/jenkins_docker/data/
④配置SonarQube服务端地址,修改conf
下的sonar-scanner.properties
文件
cd /usr/local/docker/jenkins_docker/data/sonar-scanner/conf vim sonar-scanner.properties
- 执行命令检测代码
# 在项目所在目录执行以下命令,我这里在/usr/local/docker/jenkins_docker/data/workspace/mytest下执行 /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383 -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target/ 解释: /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner :sonar-scanner命令所在目录 -Dsonar.sources=./ :检测的文件所在目录 -Dsonar.projectname=linux-test :给检测项目命名 -Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383 :sonarqube网页上生成令牌 -Dsonar.projectKey=linux-test :指定项目标识(key) -Dsonar.java.binaries=./target/ :设置编译过后的内容在哪
Ps:主要查看我的sonar-scanner执行命令的位置,这里是/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner
查看日志:
4、查看SonarQube界面检测结果
7.4 Jenkins集成Sonar Qube
Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件
7.4.1 Jenkins中安装sonarqube插件
在Jenkins中下载SonarQube Scanner插件
7.4.2 Jenkins系统配置Sonar Qube
- 先在sonarqube上开启Sonar Qube权限验证,一般默认是开启的
2、获取Sonar Qube的令牌
3、在Jenkins上配置Sonar Qube信息
【系统管理】——【系统配置】
找到SonarQube servers
密码可能添加不了,没关系,先应用保存,然后再回来添加
选择刚才加好的信息,应用保存
7.4.3 全局配置Sonar-scanner
- 将Sonar-scaner添加到Jenkins数据卷中并配置全局配置
2、mytest任务里构建操作配置sonar-scanner
编辑参数
sonar.projectname=${JOB_NAME} sonar.projectKey=${JOB_NAME} sonar.source=./ sonar.java.binaries=target
7.4.4 构建任务
点击立即构建,如果报错,检查/usr/local/docker/jenkins_docker/data/workspace/mytest
下是否有隐藏文件“.scannerwork
”,有的话就删掉,再次构建。