简介

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

安装

docker安装服务端

推荐安装9.9.0-community 版本,因为我没找到9.9版本以上的扫描报告pdf生成插件

docker run -d --name sonarqube9 \
  -p 9000:9000 \
  -v /data/sonarqube/conf:/opt/sonarqube/conf \
  -v /data/sonarqube/data:/opt/sonarqube/data \
  -v /data/sonarqube/logs:/opt/sonarqube/logs \
  -v /data/sonarqube/pdf-files:/opt/sonarqube/pdf-files \  #这个是第三方插件生成pdf的目录
  -v /data/sonarqube/extensions/plugins:/opt/sonarqube/extensions/plugins \  #这个是第三方插件生成pdf的目录
  sonarqube:9.9.0-community

注意:需提前创建数据目录并设置权限chmod 777 -R /data/sonarqube/

数据库

默认用的是h2数据库,后续可以自己更改数据库 /data/sonarqube/conf/sonar. properties (没有这个文件自己创建一个就行)

# PostgreSQL 示例
sonar.jdbc.url=jdbc:postgresql://172.17.0.4:5432/sonar2
sonar.jdbc.username=sonar2
sonar.jdbc.password=sonar2

nginx推荐配置(可选)

server {
    listen 80;
    server_name sonarqube.yourdomain.com;
    return 301 https://$host$request_uri;  # HTTP 强制跳转 HTTPS
}

server {
    listen 443 ssl;
    server_name sonarqube.yourdomain.com; #替换为自己的域名

    # SSL 证书路径
    ssl_certificate /etc/letsencrypt/live/sonarqube.yourdomain.com/fullchain.pem;  #替换为自己的证书
    ssl_certificate_key /etc/letsencrypt/live/sonarqube.yourdomain.com/privkey.pem;  #替换为自己的证书密钥

    # 安全强化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 反向代理配置
    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;  # 关键:告知 SonarQube 使用 HTTPS
        proxy_http_version 1.1;
        proxy_connect_timeout 60;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        client_max_body_size 20M;  # 允许大文件上传
    }
}

客户端配置

下载

扫描器下载地址:SonarScanner

下载完成后解压缩到任意目录(自己找得到就行)

配置环境变量

新建一个变量,SONAR_SCANNER_HOME 值就是你解压的目录

bin 目录添加到 %PATH% 环境变量

服务端使用

如果按照教程部署,输入http://替换你的ip:9000/ 进入服务端,默认密码和账户都是admin

汉化

你们进入应该都是英文,根据图片标注也能找到中文插件

PDF生成插件

下载地址:sonar-pdf-plugin 发行版 - Gitee.com

  • 下载后放到文件夹/data/sonarqube/extensions/plugins 重启

  • 重启后可以看见这个PDF生成器,输入自己的账户名和密码就行

扫描并生成PDF

  • 登陆服务端,点击项目——新增项目——手工,根据自己需要生成,点击设置进入下一步

  • 点击本地,创建令牌

  • 选择分析方法并复制命令,在项目下的目录进行执行

  • 有时会报错找不到编译后的文件可以在原命令后面加一个命令定位到指定地址,以java为例

-D"sonar.java.binaries=./target/classes" 
  • 项目扫描完毕

  • 生成PDF