1. Sonarqube服务搭建
docker-compose.yml
version: '2'
services:
postgres:
image: postgres:12
container_name: sonarqube_postgres
privileged: true
ports:
- "5432:5432"
networks:
- sonarnet
restart: always
volumes:
- ./postgres:/var/lib/postgresql/data
environment:
POSTGRES_DB: sonar
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:7.9-community
container_name: sonarqube
privileged: true
ports:
- "9000:9000"
restart: always
networks:
- sonarnet
depends_on:
- postgres
volumes:
- ./data:/opt/sonarqube/data
- ./extensions:/opt/sonarqube/extensions
- ./logs:/opt/sonarqube/logs
- ./conf:/opt/sonarqube/conf
environment:
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar?useUnicode=true&characterEncoding=utf8
ulimits:
nproc: 65535
nofile:
soft: 65536
hard: 65536
networks:
sonarnet:
driver: bridge
解决报错:
1. chown -R 999:999 SONAR_HOME
2. ulimit 永久生效
编辑 /etc/security/limits.conf
加入如下配置
# * 代表所有用户,可以针对某个用户配置 如:root soft notfile 65536
* soft nofile 65536
* hard nofile 65536
* soft nproc 65565
* hard nproc 65565
3. sysctl永久生效
编辑 /etc/sysctl.conf
加入如下配置
vm.max_map_count=262144
fs.file-max=65536
sysctl -p
重启
sonarqube插件安装,参考官方文档:https://docs.sonarqube.org/display/PLUG/
下载c/c++代码规则插件
地址:https://github.com/SonarOpenCommunity/sonar-cxx/releases
sonar-cxx-plugin-1.3.2.1853.jar
下载中文插件,注意不能高于sonarqube版本
地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.16
将已下载的 jar包下载到SONARQUBE_HOME / extensions / plugins目录中
重启sonarqube
2. Sonar-scanner 安装
历史版本地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.3.0.2102-linux.zip
unzip 解压
vim conf/sonar-scanner.properties
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server
#sonar.host.url=http://localhost:9000
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
#sonar.host.url=http://192.168.0.109:9000
#sonar.sourceEncoding=UTF-8
#sonar.jdbc.url=jdbc:postgres://sonar:sonar@192.168.0.109:5432/sonar #postgres数据库ip:端口
#sonar.jdbc.username=sonar
#sonar.jdbc.password=sonar
#sonar.login=admin
#sonar.password=admin
# 项目名,如果项目名不存在会自动创建该项目
sonar.projectKey=work
sonar.projectName=work #sonarqube中创建的项目名
# 源码路径,设置为当前目录
sonar.projectBaseDir=path #要扫描的工作目录
# SonarQube 访问地址,根据实际情况填写
sonar.host.url=http://192.168.0.109:9000
# token,在 SonarQube 中创建的 token,只有 SonarQube 开起了强制用户认证,才需要 token,默认情况下,强制用户认证是关闭的。
sonar.login=fffd8ab684898b58aa128baa5ad018594686e966 #去sonarqube网页查看项目token
# 语言类型
sonar.language=cpp
# 二进制文件目录,就是 .class 文件的目录,只有部分项目需要该配置
#sonar.java.binaries=collector/target/classes,jmx_prometheus_httpserver/target/classes,jmx_prometheus_javaagent/target/classes
# 源代码编码格式
sonar.sourceEncoding=UTF-8
运行 bin/sonar-scanner