Agent Skills
返回列表
💻

SonarQube 门禁执行器

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/sonarqube-gate-enforcer。

技能介绍

要解决的问题

质量门禁(Quality Gate)本质是 SonarQube 服务端的能力,但很多团队把它接进 CI 之后,仍然靠人盯面板上的颜色变化来决定能不能合并。一旦没人注意,覆盖率下滑、重复率超标、引入新缺陷的分支就会悄悄合进主干,等发现时已经影响了一批下游工作。这个技能要解决的问题很直接:把门禁判断从「事后看一眼」变成流水线里的一次自动检查,不通过就当场拦住合并。

工作原理

技能围绕 SonarQube 的 Web API 展开,核心是调用 /api/qualitygates/project_status 端点,大致分三步:

  • 在 CI 中对目标项目触发一次门禁状态查询,拿到服务端计算好的项目状态结果;
  • 依据返回结果判断门禁是否通过,关注覆盖率是否下降、重复率是否超出阈值、是否引入了新缺陷;
  • 门禁未通过时,让流水线以失败状态结束,从而阻断后续的合并动作。

这套机制的关键在于,判断依据完全来自 SonarQube 服务端真实的扫描结果,而不是在 CI 里重新实现一套阈值比较逻辑,两边口径天然一致。

适用边界与注意点

  • 技能只负责执行门禁判断与拦截,扫描本身仍由 SonarQube 完成,服务端需要先有可用的扫描数据;
  • 构建环境要求 Java 17 和 npm,且原生 git 必须已安装并存在于 PATH 中;
  • 如果改动涉及 UI 部分,需要额外克隆 sonarqube-webapp 仓库、在本地构建,再通过 WEBAPP_BUILD_PATH 环境变量让主仓库使用该前端构建产物;
  • 提交需遵守上游代码风格,每个 Pull Request 都会执行 Travis 构建;只想编译不跑测试时,可以用 -x test 跳过测试。

使用场景

  • 在 CI 流水线中对 Java 项目触发 SonarQube 扫描后,需自动调用门禁接口决定是否允许合并。
  • 当代码改动导致单元测试覆盖率下滑或重复率超标时,需要在合并前通过门禁状态自动拦截。
  • 在本地编译涉及前端改动的 SonarQube 代码时,需配合环境变量完成 webapp 与后端的联合构建。
  • 每次提交 Pull Request 时,需确保代码风格符合规范并通过 CI 构建中的测试校验。

适合人员

  • Java 后端开发者:需要在提交 PR 时确保代码质量指标符合 SonarQube 门禁要求,避免构建失败。
  • DevOps 工程师:负责配置 CI 流水线,需要将 SonarQube 质量门禁状态作为合并代码的强制检查项。
  • 项目维护者:需要在主分支上强制实施质量标准,自动拦截引入新缺陷或覆盖率下降的 PR。