目录
[一、什么是 SonarQube](#一、什么是 SonarQube)
[二、四大版本区别(2026 命名)](#二、四大版本区别(2026 命名))
[1. Community Build(社区版,免费开源)](#1. Community Build(社区版,免费开源))
[2. Developer Edition(开发者付费版)](#2. Developer Edition(开发者付费版))
[3. Enterprise Edition Edition(企业版,付费)](#3. Enterprise Edition Edition(企业版,付费))
[4. Data Center(数据中心版,付费)](#4. Data Center(数据中心版,付费))
[补充:SonarQube Cloud(SaaS 云服务)](#补充:SonarQube Cloud(SaaS 云服务))
[1. 六大代码质量指标](#1. 六大代码质量指标)
[2. Quality Gate(质量门禁,核心管控)](#2. Quality Gate(质量门禁,核心管控))
[3. DevOps 全链路集成](#3. DevOps 全链路集成)
[4. 密钥泄露检测](#4. 密钥泄露检测)
[四、快速部署(Docker 推荐,CentOS7 / 通用)](#四、快速部署(Docker 推荐,CentOS7 / 通用))
[1)Docker 一键启动(测试环境)](#1)Docker 一键启动(测试环境))
[2)PostgreSQL 外置数据库(生产标准)](#2)PostgreSQL 外置数据库(生产标准))
[五、代码扫描示例(Maven Java 项目)](#五、代码扫描示例(Maven Java 项目))
[方式 1:Maven 内置 Scanner(最常用)](#方式 1:Maven 内置 Scanner(最常用))
[方式 2:CLI Scanner(多语言通用)](#方式 2:CLI Scanner(多语言通用))
[六、主流版本 LTA 长期支持(2026)](#六、主流版本 LTA 长期支持(2026))
[七、常见运维 / 兼容问题(适配 CentOS7+PostgreSQL 升级场景)](#七、常见运维 / 兼容问题(适配 CentOS7+PostgreSQL 升级场景))
[八、配套工具 SonarLint](#八、配套工具 SonarLint)
一、什么是 SonarQube
静态代码分析(SAST)平台,核心作用:自动化代码质检、持续管控代码质量与安全漏洞,属于 DevOps 标准流水线工具。
- 无需运行代码,扫描源码即可发现问题
- 覆盖四大检测维度:Bug、安全漏洞、代码异味、重复代码、复杂度、技术债
- 支持 Java/Go/Python/JS/TS/Docker/K8s/SQL 等 20 + 主流语言
- 配套 SonarLint:IDE 本地实时检测(IDEA/Vscode/Eclipse 免费插件)
核心四大模块架构
- SonarQube Server(服务端)
- Web 服务:可视化报表、质量门禁、规则配置、权限管理(默认端口 9000)
- Compute Engine:解析扫描结果、计算指标、生成报告
- Elasticsearch:全文检索代码问题
- 数据库:存储项目历史、规则、用户(官方推荐 PostgreSQL,不支持 MySQL 新版)
- Scanner 扫描器:客户端工具(Maven/Gradle/CLI/Jenkins 插件),本地扫描代码上传结果
- SonarLint:IDE 插件,开发时实时提示问题,提前拦截缺陷
二、四大版本区别(2026 命名)
1. Community Build(社区版,免费开源)
适合个人 / 小团队、内部测试
- 支持 21 种主流语言(Java/Go/Python/JS/Docker 等)
- 基础 Bug、漏洞、代码异味、密钥硬编码检测
- 基础 CI 集成、单分支分析、基础质量门禁
- 限制:无多分支 / PR 分析、无 C/C++/Swift、无污点安全分析、无企业报表、无商业支持
2. Developer Edition(开发者付费版)
中小研发团队 社区版全部能力 +
- C/C++/Swift/Shell/PLSQL 等扩展语言
- 分支、Pull Request MR 分析(流水线拦截合并)
- AI 代码校验、污点注入漏洞深度检测(SQL 注入 / XSS)
- 高级密钥泄露扫描
3. Enterprise Edition Edition(企业版,付费)
中大型企业合规、多项目治理 Developer 全部能力 +
- 项目集大盘、全局质量管控、合规报告(NIST/OWASP)
- 第三方工具 SARIF 报告导入(依赖扫描、漏洞工具)
- 细粒度权限、审计日志、PDF 导出、自定义规则集
4. Data Center(数据中心版,付费)
大型集群、高可用生产环境 Enterprise 全部能力 +
- 集群部署、负载均衡、故障自动切换
- 横向扩容、海量代码库性能优化、7×24 付费技术支持
配套产品线改名:
- SonarLint → SonarQube for IDE
- SonarCloud(SaaS 云)→ SonarQube Cloud
补充:SonarQube Cloud(SaaS 云服务)
免自建服务器,托管云版本,分免费 / 团队 / 企业订阅,适合不想运维服务器的团队SonarQube。
三、核心功能
1. 六大代码质量指标
- Bugs:运行时逻辑错误(空指针、数组越界、资源未关闭)
- Vulnerabilities:安全漏洞(OWASP Top10、SQL 注入、XSS、命令注入)
- Security Hotspots:风险代码段(需人工确认是否可利用)
- Code Smells(代码异味):规范问题(命名混乱、冗余判断、超长方法、缺少注释)
- Duplications:重复代码块,提升维护成本
- Technical Debt(技术债):修复所有问题预估工时,用于团队量化质量
2. Quality Gate(质量门禁,核心管控)
自定义放行阈值,流水线不达标直接阻断发布,常用规则示例:
- 新增代码 0 高危漏洞、0 阻断级 Bug
- 单元测试覆盖率≥80%
- 重复代码率<5%
- 无新增密钥硬编码、无高危安全热点
3. DevOps 全链路集成
Jenkins/GitLab CI/GitHub Actions/Azure DevOps/Maven/Gradle,提交代码自动扫描,PR 失败直接禁止合并。
4. 密钥泄露检测
识别代码中硬编码密码、AK/SK、数据库账号,避免敏感信息提交仓库引发安全事故SonarQube。
四、快速部署(Docker 推荐,CentOS7 / 通用)
前置要求
- JDK17(2025.4+ LTA 强制要求)
- 内存≥4G,生产 8G+
- 数据库:PostgreSQL 14+
1)Docker 一键启动(测试环境)
# 拉取社区版镜像
docker pull sonarqube:latest
# 启动容器(关闭ES内存校验,单机测试)
docker run -d \
--name sonarqube \
-p 9000:9000 \
-e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true \
-v sonar_data:/opt/sonarqube/data \
-v sonar_extensions:/opt/sonarqube/extensions \
sonarqube:latest
访问:http://服务器IP:9000 默认账号密码:admin / admin,首次登录强制改密码
2)PostgreSQL 外置数据库(生产标准)
-
创建库与用户
CREATE DATABASE sonarqube ENCODING 'UTF8' LC_COLLATE 'en_US.utf8' LC_CTYPE 'en_US.utf8';
CREATE USER sonar WITH PASSWORD 'Sonar@123456';
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar; -
容器挂载配置
sonar.properties指定数据库连接参数
五、代码扫描示例(Maven Java 项目)
方式 1:Maven 内置 Scanner(最常用)
# 本地扫描并上传至Sonar服务
mvn clean package sonar:sonar \
-Dsonar.host.url=http://127.0.0.1:9000 \
-Dsonar.login=你的项目Token
方式 2:CLI Scanner(多语言通用)
下载 sonar-scanner 二进制,执行:
sonar-scanner \
-Dsonar.projectKey=demo-java \
-Dsonar.sources=./src \
-Dsonar.host.url=http://127.0.0.1:9000 \
-Dsonar.login=项目Token
六、主流版本 LTA 长期支持(2026)
- 9.9 LTA:老稳定版,JDK11 兼容,CentOS7 低环境适配
- 2025.4 LTA:当前主力长期版,JDK17,增强 SAST 安全、AI 代码校验、PostgreSQL 新版适配(你之前升级 PostgreSQL 配套推荐此版本)
- 10.x:过渡版本,无长期支持,不建议生产使用
七、常见运维 / 兼容问题(适配 CentOS7+PostgreSQL 升级场景)
- ES 启动失败 :系统内核参数调整
vm.max_map_count=262144 - 数据库连接报错:社区版新版弃用 MySQL,必须使用 PostgreSQL
- PostgreSQL 版本兼容:2025.4 最低 PG14,升级 PG10→17 后需同步升级 Sonar 至 2025.4
- 扫描内存溢出 :调整 scanner JVM 参数
-Xmx2048m - Jenkins 流水线阻断:Quality Gate 未通过会返回非 0 退出码,流水线直接失败
八、配套工具 SonarLint
IDE 本地插件,离线实时扫描:
- 编码时标红漏洞、代码规范问题
- 无需连接 Sonar 服务,提前修复,减少流水线阻塞
- 免费,所有版本通用
