Sonarqube,Sonarscanner 代码静态检测搭建

乐正远航
2023-12-01

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

 类似资料: