用途
Quality Gates Enforcer 用于在代码合并前强制执行最低质量标准。它通过 CI 工作流在拉取请求(pull request)阶段运行一系列检查,只有全部通过才允许合并,从而防止覆盖率不足、代码风格不一致、类型错误、安全漏洞或包体积超标等问题进入主分支。
主要能力
该技能提供以下质量门禁的配置示例:
- 覆盖率门禁:在 GitHub Actions 中运行带覆盖率的测试,读取 coverage-summary.json 中的行覆盖率并与阈值(示例为 80%)比较,低于阈值则失败;同时通过 lcov-reporter-action 在 PR 上评论覆盖率结果。
- Jest 覆盖率阈值:在 jest.config.js 中配置全局及关键目录(./src/critical/)的分支、函数、行、语句覆盖率阈值。
- Linting 门禁:运行 ESLint 并设置 --max-warnings 0,同时执行格式化检查(format:check)。
- 类型检查门禁:通过 npx tsc --noEmit 执行 TypeScript 类型检查。
- 安全扫描:使用 Snyk 扫描(severity-threshold=high)、npm audit(audit-level=moderate),并检查过时依赖。
- 包体积门禁:构建后使用 size-limit-action 检查包体积。
- 必需状态检查:通过 needs 依赖汇总 lint、typecheck、test、coverage、security 等任务结果,任一失败则整体失败。
- 质量阈值集中定义:在 quality-thresholds.ts 中集中声明覆盖率、lint、包体积、性能、安全、依赖等阈值。
- 分支保护规则:提供 GitHub 分支保护配置示例,包括必需状态检查、PR 审查要求、管理员强制执行等。
- 质量报告生成:生成包含覆盖率、lint 警告/错误数、TypeScript 错误数、漏洞数、包体积的 Markdown 报告,并通过 github-script 自动评论到 PR。
- 自动失败机制:汇总检查覆盖率、lint 警告、TypeScript 错误、安全漏洞,任一不达标则退出码非零。
使用方式
该技能以配置示例和代码片段的形式提供,用户需要将其中的 GitHub Actions 工作流(如 .github/workflows/quality-gates.yml、required-checks.yml)、Jest 配置、阈值定义文件等复制到自己的项目中,并根据项目实际情况调整阈值、命令和依赖。分支保护规则需通过 GitHub 设置或 API 配置。
适用场景
适用于使用 GitHub Actions 和 Node.js/TypeScript 技术栈、希望在 CI 中统一执行质量门禁的团队。特别适合需要强制覆盖率、零 lint 警告、类型安全、安全扫描和包体积控制的仓库。
限制
资料中未提供该技能的安装命令、包管理方式、版本兼容性说明、收费信息或平台支持范围。示例中的阈值(如 80% 覆盖率、200kb 包体积)为参考值,实际使用需按项目调整。部分步骤依赖第三方 Action(如 snyk/actions、size-limit-action、lcov-reporter-action)及相应密钥(SNYK_TOKEN、GITHUB_TOKEN)。