SonarQube 质量门禁
SonarQube 的通行条件组合:对新增代码的覆盖率、重复率与问题评级设阈值,全部满足才判定通过;CI 中运行 sonar-scanner 后查询门禁结果,决定流水线继续还是阻断。门禁默认盯着新代码周期,先治理增量、存量问题分阶段清理,避免一次开出过长的整改清单。
基本信息
| 判定对象 | 默认以 New Code(新增代码)为主 |
|---|---|
| Sonar way 默认条件 | 新代码覆盖率八成、重复率百分之三、安全热点全部评审、新增问题评级 A |
| 集成 | CI 中运行扫描器,再等待质量门禁结果 |
| 失败行为 | 门禁未通过可按配置中止流水线 |
| 令牌 | 扫描器使用最小权限的令牌 |
典型使用场景
- 合并门禁:门禁不通过阻止合并请求。
- 增量治理:只对新增代码设限,存量分阶段清理。
- 版本对比:扫描结果关联版本与分支。
- 热点评审:安全热点逐条确认而不是一刀切。
- 度量趋势:技术债与重复率按周观察。
扫描并查询门禁结果
扫描并查询门禁结果
sonar-scanner \
-Dsonar.projectKey=web \
-Dsonar.sources=src \
-Dsonar.host.url=https://sonar.example.com
curl -s -u "$SONAR_TOKEN:" \
"https://sonar.example.com/api/qualitygates/project_status?projectKey=web"默认条件速览
| 条件 | 对象 | 默认线 |
|---|---|---|
| 覆盖率 | 新增代码 | 不低于八成 |
| 重复率 | 新增代码 | 不高于百分之三 |
| 新增问题 | 新增代码 | 评级 A |
| 安全热点 | 新增热点 | 全部已评审 |
门禁默认覆盖 New Code 周期:先治理增量,存量问题分阶段清理,避免一次开出的整改清单过长。
查询门禁要等扫描完成:任务异步结束,CI 里轮询或使用内置集成等待结果再判定。
把扫描任务设为允许失败等于没有门禁:要么阻断要么明确标注为观察期。
分支与合并请求都要分析:平台按提交把结果挂到合并请求上,配置里要开启对应分析模式。
开发者本地先跑扫描:提交前自查一遍,减少流水线上的往返次数。
质量配置即代码:质量配置与规则集用文件管理,团队统一升级,而不是各自在界面上改。
新项目第一天就接门禁:代码量小的时候定规则、改习惯,成本最低。