首页/开发/CI/CD 与发布速查/SonarQube Quality Gate 质量门禁
质量门禁与回滚51 条

SonarQube Quality Gate 质量门禁

SonarQube 的通行条件组合:对新增代码的覆盖率、重复率与问题评级设阈值,全部满足才判定通过,可在 CI 中查询结果决定是否继续。

CI/CD 与发布速查开发更新于 2026-10-13

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 里轮询或使用内置集成等待结果再判定。
把扫描任务设为允许失败等于没有门禁:要么阻断要么明确标注为观察期。
分支与合并请求都要分析:平台按提交把结果挂到合并请求上,配置里要开启对应分析模式。
开发者本地先跑扫描:提交前自查一遍,减少流水线上的往返次数。
质量配置即代码:质量配置与规则集用文件管理,团队统一升级,而不是各自在界面上改。
新项目第一天就接门禁:代码量小的时候定规则、改习惯,成本最低。

易错点

  • 门禁条件照抄不调整:阈值与本团队基线不匹配,长期全红或形同虚设。
  • 把扫描任务设为允许失败:门禁实际不起作用。
  • 只在发布前扫描:修复成本高,增量门禁要放到合并前。
  • 令牌权限过大:扫描器只需最小权限,泄露后影响面可控。
  • 忽略误报处理流程:长期红项无人处理,成员对门禁失去信任。
  • 只看总量不看新代码:存量债务压得总数上不去,新代码质量被平均稀释。

数据来源与参考

  • SonarQube Docs《Quality gates》
  • SonarQube Docs《Clean as You Code》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌