SonarQube PR 门禁
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/sonarqube-pr-gate-skill。
技能介绍
要解决的问题
Pull Request 合并前的代码质量检查,常常停留在“CI 绿了就合”的层面。SonarQube 虽然已经算出了 quality gate 结果,但这个结论往往只躺在 Web 界面里,并没有真正卡住合并动作。结果就是:重复代码、代码异味、覆盖率不足这些问题被反复合入主干,修复成本越拖越高。
核心能力与工作方式
@user_3c6cb52e/sonarqube-pr-gate-skill 做的事情,是把 SonarQube 的质量门禁结论直接挂到 PR 流程上,让“检查不通过就不许合并”成为可执行的硬约束。
它的关键步骤是:
- 调用 SonarQube Web API 的
/api/qualitygates/project_status,拉取当前项目的门禁状态; - 对代码异味、重复率、覆盖率阈值等维度逐一判断,只要有一项不达标,就拦截这次合并;
- 通过 GitHub Checks API 把问题以 inline annotations 的形式贴回 PR 的具体代码行上,让评审者直接看到哪几行引入了问题。
相比只在 PR 描述里贴一张静态报告,内联注释让作者和 reviewer 都能在讨论上下文里定位问题。
适用边界与注意点
- 本机必须能直接调用 Native Git,且已加入
PATH,否则技能无法驱动仓库操作; - 如果改动涉及 UI 部分,需要额外克隆
sonarqube-webapp仓库,在其中完成修改和本地构建,再通过WEBAPP_BUILD_PATH环境变量让 SonarQube 主仓库使用这个构建产物; - 构建侧依赖 Java 17 和 npm,缺一不可;
- 只想快速构建、暂时不想跑测试时,可以在 gradle 命令后加
-x test跳过,但这不适用于需要完整验证的 PR。
使用场景
- 在 GitHub PR 上做合并评审,需要确认 SonarQube 质量门禁是否通过,并对失败项添加行内注解
- 编写 CI 工作流,要求代码异味、重复或覆盖率阈值不达标时阻止当前 PR 被合并
- 维护 SonarQube 仓库并涉及 webapp UI 改动,需要先在 webapp 仓库完成改动和构建,再回到主仓库继续构建
- 在缺少测试依赖或想跳过测试的场景下,使用 `-x test` 构建 SonarQube 相关项目以验证编译结果
适合人员
- 维护 SonarQube 或其相关工具仓库的后端工程师,需要在 PR 合并前执行质量门禁检查
- 搭建或调整 CI/CD 流水线的工程师,需要把 SonarQube 质量门禁与 GitHub PR 检查状态打通
- 负责 SonarQube webapp UI 改动的前端或全栈工程师,需要按仓库要求分别构建 webapp 和主项目
- 参与 SonarQube 项目构建配置的开发者,需要处理 Java、npm、Gradle 和测试开关等构建要求