用途:SonarQube 用于持续检查代码质量,检测缺陷、漏洞(SAST)和代码异味,覆盖 30 多种编程语言。适用于持续代码质量与整洁代码审计、在拉取请求中执行质量门禁、跟踪技术债与可维护性,以及满足 OWASP Top 10、CWE、SANS Top 25 等安全合规要求。
主要能力:静态分析(SAST)、质量门禁(Quality Gates)、测试覆盖率跟踪、重复率与复杂度度量、修复时间估算。核心方法是“Clean as You Code”,即质量门禁聚焦于“新代码”(PR 中修改的部分),而非历史债务。
使用方式:可用 Docker 启动服务:docker run -d --name sonarqube -p 9000:9000 sonarqube:lts,默认登录 admin/admin,地址 http://localhost:9000。通过 sonar-project.properties 配置项目键、源码路径、测试路径、排除项与覆盖率报告路径,例如 sonar.projectKey、sonar.sources、sonar.tests、sonar.exclusions、sonar.javascript.lcov.reportPaths、sonar.qualitygate.wait。使用 SonarScanner CLI 执行分析:sonar-scanner -Dsonar.host.url=... -Dsonar.token=$SONAR_TOKEN。Maven 项目可运行 mvn clean verify sonar:sonar 并传入 projectKey、host.url、token 与 qualitygate.wait。
适用场景:CI 流水线中的代码质量检查、PR 合并前门禁、企业安全合规审计。
限制与注意事项:需先生成有效的覆盖率报告(LCOV、JaCoCo XML)再运行扫描;令牌无效或过期会导致未授权错误;服务器不可达通常由防火墙或代理导致。建议在 IDE 中使用 SonarLint 本地即时分析,不要一次性修复全部历史债务,也不应通过禁用规则绕过失败的质量门禁。