部署代码质量检测工具Sonarqube

本文最后更新于 525 天前, 如有失效请评论区留言.

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

默认使用容器化方式部署

安装docker

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

安装sonarqube

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

Chapters

Sponsor

Like this article? $1 reward

Comments