SonarQube是一个开源的代码审计工具,用来持续分析和评测项目源代码的质量。通过SonarQube我们可以检测出项目中重复的代码,潜在bug,代码规范,安全性漏洞等,并通过SonarQube的web界面展示出来
1、Docker安装SonarQube平台
- SonarQube是需要使用postgresql数据库
- docker部署SonarQube平台
#拉取SonarQube和postgresql的镜像
docker pull sonarqube:8.9.6-community
docker pull postgres
]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres latest 07e2ee723e2d 14 months ago 374MB
sonarqube 8.9.6-community 3f623568fa64 14 months ago 497MB
#创建一个工作目录
mkdir -p /usr/local/docker/sonarqube_docker
cd /usr/local/docker/sonarqube_docker
#编写docker-compose.yaml文件
vim docker-compose.yaml
version: '3.1'
services:
db:
image: postgres
container_name: db
ports:
- 5432:5432 #默认端口为5432
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:8.9.6-community
container_name: sonarqube
depends_on: #在sonarqube容器启动是依赖于db容器的,先启动postgres容器
- db
ports:
- 9000:9000 #默认端口为9000
networks:
- sonarnet
environment: #连接数据库配置
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
networks:
sonarnet:
driver: bridge
#启动
docker-compose up -d
- 打开浏览器,访问http://IP:9000
首次登录
用户名:admin
密码:admin
image.png
登陆后修改密码
2、SonarQube基本使用
- 安装中文插件
image.png
image.png
重启后
image.png - 代码检测方法
方法一:使用maven命令进行扫描
#修改idea所在电脑的maven目录中的setting.xml文件配置
... ...
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.login>admin</sonar.login>
<sonar.password>hongkai123</sonar.password>
<sonar.host.url>http://192.168.2.101:9000</sonar.host.url>
</properties>
</profile>
... ...
在idea工具的命令行中进行代码检测
F:\xiangmu\demo> mvn sonar:sonar

image.png
此时在sonarqube网页上会看到一个检测项目

image.png
方法二:使用Sonar-scanner进行扫描
sonar-scanner插件下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip
]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip
#下载解压zip压缩包的工具
]# yum install -y unzip
#解压工具
]# unzip sonar-scanner-cli-4.8.0.2856-linux.zip
]# mv sonar-scanner-4.8.0.2856-linux/ sonar-scanner
#将sonar-scanner移动到Jenkins的docker数据卷目录中
mv ~/sonar-scanner /usr/local/docker/jenkins_docker/data/
#修改配置文件
cd /usr/local/docker/jenkins_docker/data/sonar-scanner/conf
]# vim sonar-scanner.properties
sonar.host.url=http://192.168.2.101:9000
sonar.sourceEncoding=UTF-8
#注:该文件可以不指定用户名密码,可以通过sonarqube服务提供的token来使用
进入workspace工作目录来进行扫描
cd /usr/local/docker/jenkins_docker/data/workspace
#开始扫描
[root@jenkins mytest]# /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.source=./ -Dsonar.projectname=linux-test -Dsonar.login=4a07a971591176830b953903d49e76281160d05d -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target
报错如下:
1.需要指明token或用户名密码

image.png
2.token生成

image.png
3.加上token后,又报错,需要指定一个projectKey随意设

image.png
4.加上project.key后又报错,不知道sonar.java.binaries在哪,指定jar包文件夹

image.png
5.添加好后查看sonarqube网页

image.png
3、SonarQube整合Jenkins
-
在Jenkins上安装Sonar-scanner插件
image.png -
系统配置,让Jenkins可以连接上Sonarqube服务
image.png
image.png -
全局配置
image.png - 配置构建任务
image.png
工作目录为/var/jenkins_home/workspace/mytest
image.png -
构建任务
出现报错
image.png
#进入工作目录,删除该隐藏文件
[root@jenkins local]# cd /usr/local/docker/jenkins_docker/data/workspace/
[root@jenkins workspace]# cd mytest
[root@jenkins mytest]# ls
docker mvnw mvnw.cmd pom.xml src target
[root@jenkins mytest]# ls -a
. .. docker .git .gitignore .mvn mvnw mvnw.cmd pom.xml .scannerwork src target
[root@jenkins mytest]# rm -rf .scannerwork/
[root@jenkins mytest]# ls -a
. .. docker .git .gitignore .mvn mvnw mvnw.cmd pom.xml src target
重新构建
成功检测,sonarqube网页也有检测记录

image.png

image.png










