集成Sonar Qube
1、 Sonar Qube介绍
Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。
Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来
Sonar Qube的UI界面 |
---|
2、 Sonar Qube环境搭建
2.1、 Sonar Qube安装
Sonar Qube在7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。
并且这里会安装Sonar Qube的长期支持版本8.9
-
拉取镜像
docker pull postgres docker pull sonarqube:8.9.6-community
-
编写docker-compose.yml
version: "3.1" services: db: image: postgres container_name: db ports: - 5432:5432 networks: - sonarnet environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar sonarqube: image: sonarqube:8.9.3-community container_name: sonarqube depends_on: - db ports: - 9000:9000 networks: - sonarnet environment: SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: sonar networks: sonarnet: driver: bridge
-
启动容器
docker-compose up -d
-
需要设置sysctl.conf文件信息
vim /etc/sysctl.conf
设置vm.max_map_count |
---|
并执行命令刷新
sysctl -p
-
重新启动需要一定时间启动,可以可以查看容器日志,看到如下内容代表启动成功
容器日志 -
访问Sonar Qube首页
登录 -
还需要重新设置一次密码
重新设置密码 -
Sonar Qube首页
Sonar Qube首页
2.2、 安装中文插件
安装中文插件 |
---|
安装成功后需要重启,安装失败重新点击install重装即可。
安装成功后,会查看到重启按钮,点击即可
重启按钮 |
---|
重启后查看效果
首页效果 |
---|
3、 Sonar Qube基本使用
Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果
3.1、 Maven实现代码检测
-
修改Maven的settings.xml文件配置Sonar Qube信息
<profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <sonar.login>admin</sonar.login> <sonar.password>***1230.</sonar.password> <sonar.host.url>http://192.168.117.112:9000</sonar.host.url> </properties> </profile>
-
在代码位置执行命令:mvn sonar:sonar
执行代码检测 -
查看Sonar Qube界面检测结果
Sonar Qube检测结果
3.2、 Sonar-scanner实现代码检测
- 下载Sonar-scanner:https ://search.maven.org/remote_content?g=org.sonarsource.scanner.cli&a=sonar-scanner-cli&v=LATEST&c=linux&e=zip
下载4.7.x版本即可,要求Linux版本
-
解压并配置sonar服务端信息
-
由于是zip压缩包,需要安装unzip解压插件
yum -y install unzip
-
解压压缩包
unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
-
mv sonar-scanner-4.7.0.2747-linux/ sonar-scanner
mv sonar-scanner /usr/local/docker/jenkins_docker/data/
- 配置sonarQube服务端地址,修改conf下的sonar-scanner.properties
vim sonar-scanner.properties
| 配置服务端信息 |
| :----------------------------------------------------------: |
| ![](https://img.haomeiwen.com/i14270006/3e4decd0e8785bee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)|
- 执行命令检测代码
生成访问令牌
# 在项目所在目录执行以下命令
cd /usr/local/docker/jenkins_docker/data/workspace/DevOpsDemo/
/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=demo -Dsonar.projectKey=java -Dsonar.java.binaries=target/ -Dsonar.login=910f1ea7a8314944fe31581244aa0283342bef58
查看日志信息 |
---|
-
查看SonarQube界面检测结果
检测结果
4、 Jenkins集成Sonar Qube
Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件
4.1、 Jenkins安装插件
下载Sonar Qube插件 |
---|
4.2、 Jenkins配置Sonar Qube
-
开启Sonar Qube权限验证
开启Sonar Qube权限校验 -
获取Sonar Qube的令牌
获取令牌 -
配置Jenkins的Sonar Qube信息
4.3、 配置Sonar-scanner
-
将Sonar-scaner添加到Jenkins数据卷中并配置全局配置
配置Sonar-scanner -
配置任务的Sonar-scanner
配置任务的Sonar-scanner
4.4、 构建任务
构建任务 |
---|
网友评论