SonarQube使用介绍

SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。

SonarQube由服务器、数据库、扫描仪和插件4部分组成。

部署SonarQube

sysctl设置

echo "vm.max_map_count=262144" >> /etc/sysctl.conf

sysctl -p

创建docker-compose.yml

创建一个sonar的文件夹,在文件夹下面创建docker-compose.yml文件
这里有个版本的坑要注意一下:

sonarqube:7.8-community 是 sonar 对 jdk1.8 的最后一个版本,从 7.9 以后 sonar 最低支持版本为 jdk 1.11

如果你环境是jdk1.8的话 你一定要选这个版本。

version: '3'
services:
postgres:
image: nanlist/postgres12.3:v1
restart: always
container_name: sonarqube_postgres
ports:
- 5432:5432
volumes:
# 设置与宿主机时间同步
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Asia/Shanghai
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
networks:
- sonar-network
sonar:
image: nanlist/sonarqube7.8-community:v1
restart: always
container_name: sonarqube
depends_on:
- postgres
volumes:
# 设置与宿主机时间同步
- /etc/localtime:/etc/localtime:ro
ports:
- 9000:9000
environment:
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
networks:
- sonar-network
networks:
sonar-network:
driver: bridge

Docker-compose部署SonarQube服务_jar

启动容器

启动:docker-compose up -d
停止:docker-compose down
启动:docker-compose start
停止:docker-compose stop

Docker-compose部署SonarQube服务_容器_02

访问

页面初始化需要一段时间

浏览器访问:ip+端口,如:10.10.11.79:9000

管理员账号密码都是:admin

Docker-compose部署SonarQube服务_jar_03

安装中文汉化插件

搜索chinese

Docker-compose部署SonarQube服务_容器_04

如果下载失败选择手动下载:

cd /home/sonar 下面

这一步也得找对应的版本(好坑的)

Docker-compose部署SonarQube服务_docker_05


下载jar包:

wget https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.28/sonar-l10n-zh-plugin-1.28.jar

通过docker cp 把jar包上传到sonar容器中

docker cp sonar-l10n-zh-plugin-1.28.jar  sonarqube:/opt/sonarqube/extensions/plugins/

检查是否拷贝成功

docker exec -it sonarqube bash
ls /opt/sonarqube/extensions/plugins/

Docker-compose部署SonarQube服务_docker_06

docker重启sonarqube

退出容器,重新启动一下:

docker restart sonarqube

Docker-compose部署SonarQube服务_容器_07


SonarQube 需要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还需要持续集成工具(如Jenkins)的支持,在构建版本前,通过Jenkins+Sonar 插件执行项目分析指令,最终的结果会通过SonarQube 服务器的Web 页面展示。