跳到主要内容

部署代码质量检测工具Sonarqube

· 阅读需 2 分钟

Sonarqube是一个开源的代码质量检测工具,可以帮助我们检测代码的质量,提供了很多检测项,如代码重复率、代码覆盖率、代码注释率、代码复杂度等等,可以帮助我们提高代码质量。本文将介绍如何安装、配置和使用Sonarqube。

默认使用容器化方式部署

安装docker

请参考懒人版一键快速安装docker

安装sonarqube

docker-compose.yml
docker-compose.yml
version: '2'
services:
postgresql:
image: hub.qucheng.com/app/postgresql:15
container_name: postgresql
restart: always
volumes:
- 'postgresql_data:/bitnami/postgresql'
environment:
- ALLOW_EMPTY_PASSWORD=yes
- POSTGRESQL_USERNAME=bn_sonarqube
- POSTGRESQL_DATABASE=bitnami_sonarqube
sonarqube:
image: hub.qucheng.com/app/sonarqube:qc-r3-9.9.0
container_name: sonarqube
restart: always
ports:
- '6230:9000'
volumes:
- 'sonarqube_data:/bitnami/sonarqube'
depends_on:
- postgresql
environment:
- ALLOW_EMPTY_PASSWORD=yes
- SONARQUBE_DATABASE_HOST=postgresql
- SONARQUBE_DATABASE_PORT_NUMBER=5432
- SONARQUBE_DATABASE_USER=bn_sonarqube
- SONARQUBE_DATABASE_NAME=bitnami_sonarqube
- BITNAMI_DEBUG=true
- SONARQUBE_USERNAME=admin
- SONARQUBE_PASSWORD=bitnami
volumes:
postgresql_data:
driver: local
sonarqube_data:
driver: local
注意

默认监听端口6230, 如果提示端口被占用,请编辑docker-compose.yml文件

启动sonarqube

docker compose -f docker-compose up -d

访问sonarqube

稍等几分钟, 启动比较慢, 然后访问http://<你的ip>:6230即可, 默认用户名admin/bitnami

问题排查

如果发现SonarQube没法正常启动请检查一下

sysctl -a|grep vm.max_map_count 如果值为65530。

请临时修改一下 sysctl -w vm.max_map_count=655360

OR

编辑 /etc/sysctl.conf 新增 vm.max_map_count=655360, 生效sysctl -p

最后重建容器 docker-compose -f docker-compose.yml restart sonarqube

问题原因是sonarqube依赖es,es在启动的时候要求最少为 262144,不然可能会导致内存溢出从而起不来。

sonarqube基本操作

略, 按照引导来即可。可能其中需要自己定义质量规则。

客户端安装

客户端镜像 hub.qucheng.com/app/sonar-scanner-cli:4.8

以下是一个封装脚本示例, 可根据自己情况调整

#!/bin/bash

export SONARQUBE_URL="http://<你的ip>:6230"
export SONAR_TOKEN="你的token"
export CODE_REPO="你的代码绝对路径"
export SCANNER_OPTS="-Dsonar.projectKey=zentaopms"

docker run \
--rm \
-e SONAR_HOST_URL="${SONARQUBE_URL}" \
-e SONAR_SCANNER_OPTS="${SCANNER_OPTS}" \
-e SONAR_TOKEN="${SONAR_TOKEN}" \
-v "${CODE_REPO}:/usr/src" \
hub.qucheng.com/app/sonar-scanner-cli:4.8

将上述脚本修改后保存为/usr/local/bin/codescan文件,并赋予执行权限chmod +x /usr/local/bin/codescan, 然后写完代码后执行codescan即可扫描代码

参考官方文档

其他

sonarqube镜像经过定制, 内部集成了一些常用插件

easysoft/sonarqube-docker

Loading Comments...