关于Sonar Qube
Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题,可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来。
搭建服务
1、编写docker compose文件
#创建并切换目录
mkdir -p /opt/sonar && cd mkdir /opt/sonar
#创建compose文件
vim docker-compose.yaml
version: "3.1"
services:
db:
image: postgres
container_name: db
ports:
- 5432:5432
networks:
- sonar
volumes:
- ./postgresql/data:/var/lib/postgresql/data
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:9.8-community
container_name: sonarqube
depends_on:
- db
ports:
- "9000:9000"
networks:
- sonar
volumes:
- ./sonar/data:/opt/sonarqube/data
- ./sonar/extensions:/opt/sonarqube/extensions
- ./sonar/logs:/opt/sonarqube/logs
- ./sonar/conf:/opt/sonarqube/conf
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
networks:
sonar:
driver: bridge
2、修改系统参数
vim /etc/sysctl.conf
在文件最下方增加参数
vm.max_map_count=262144
保存退出后执行命令
sysctl -p
3、启动容器
docker compose up -d
说明:我这里使用的是docker compose v2以上版本,如果是v1版本要使用命令 docker-compose up -d

等待拉取完镜像并且启动以后,可以观察Sonar Qube是否启动完成,docker logs -f sonarqube –tail 100

4、访问Sonar Qube
访问IP+9000端口,默认账户密码都是admin,第一次登陆后会要求修改密码


5、增加中文插件
先确认一下才能安装


安装完成后点击重启

重启完成后


6、使用Sonar Qube
调用Sonar Qube的方法有以下几种
- Maven调用
- 通过Sonar Qube命令调用
- Jenkins等持续集成工具调用
我这里使用Maven调用方式,先在Maven的settings文件中添加Sonar Qube
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.login>admin</sonar.login>
<sonar.password>123456</sonar.password>
<sonar.host.url>http://192.168.0.13:9000</sonar.host.url>
</properties>
</profile>

也可以不使用账号密码,生成token后连接SonarQube进行使用(SonarQube官方建议使用此方法)


创建完成后复制token,写入maven配置文件


添加配置后在Maven构建前或构建后执行mvn sonar:sonar


到这里就已经完成了Sonar Qube的搭建以及基本使用,其他调用方式我没有去试,我只是在Jenkins构建过程中增加步骤执行mvn sonar:sonar命令