SonarQube 是什么
SonarQube 是持续代码质量平台:规则库、质量配置、质量门与新代码聚焦构成它的核心模型,通过 Scanner 或构建插件接入 CI,把多语言项目的检查结果汇总成统一门禁。它不是单机的 lint 工具,而是把规则、历史趋势和门禁绑在一起的服务端平台。
基本信息
| 核心概念 | 规则库 / 质量配置 Quality Profile / 质量门 / 新代码定义 |
|---|---|
| 接入方式 | SonarScanner 或对应构建插件,串进 CI 步骤 |
| 语言覆盖 | Java、Python、JavaScript/TypeScript、Go 等主流语言 |
| 部署形态 | 社区版自建、商业版、官方云服务 |
典型使用场景
- 多语言仓库统一门禁:一处配置覆盖各语言的检查口径
- 以新代码为抓手:存量问题不阻断,新提交必须干净
- 辅助代码评审:把扫描结果作为 PR 评论或门禁条件
- 长期趋势跟踪:观察复杂度、重复率与覆盖率的变化曲线
- 分支与 PR 分析:合并前就能看到本次引入了哪些新问题
Scanner 基本用法
Scanner 基本用法
sonar-scanner \
-Dsonar.projectKey=myapp \
-Dsonar.sources=src \
-Dsonar.host.url=https://sonar.example.internal \
-Dsonar.token=$SONAR_TOKEN # 从环境变量读取,不要写进文件
# Maven 项目通常改用 mvn sonar:sonar
# 质量门结果可在 CI 中作为合并的通过条件核心概念速查
| 概念 | 含义 | 常见用法 |
|---|---|---|
| 规则库 | 平台内置的检查规则集合 | 按语言启用,或调整单条规则的严重级别 |
| 质量配置 | 一组规则的集合,可绑定到项目 | 继承平台默认配置或按团队标准自定义 |
| 质量门 | 一组通过条件的门禁 | 新代码覆盖率、重复率、阻断问题数为零 |
| 新代码定义 | 相对基线的时间或版本范围 | 常用上一版本以来,或最近一批提交 |
先把新代码跑绿再谈存量:一次性导入全部历史问题,指标会淹没团队,改进也就无从下手。
扫描本身不会改动代码:修复与豁免都要走正常流程,豁免请求需要记录理由与责任人。
质量配置长期不维护:规则与团队实际标准脱节,门禁要么形同虚设,要么频繁误伤正常改动。