关于 coverage-guard
在测试命令运行后检查覆盖率,并在低于配置阈值时发出警告。适用于希望及时发现覆盖率变化、但不阻止测试执行的团队。
主要功能
- 01在测试运行后检查覆盖率
- 02将结果与配置阈值比较
- 03覆盖率下降时发出警告
- 04支持配置覆盖率命令
适用场景
- 01发现测试运行后的覆盖率下降
- 02监控语句、分支、函数和行覆盖率阈值
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill coverage-guard安装后在 Claude Code 中输入/coverage-guard确认已加载。
附带文件scripts/check-coverage.sh
详细介绍
覆盖率守护模式
激活后,会在测试运行结束后检查覆盖率,并在覆盖率低于配置的阈值时发出警告。
功能说明
每次通过 Bash 工具运行测试后,都会将覆盖率与 config.json 中的阈值进行比较。如果覆盖率下降,则发出警告(不会阻止执行)。
激活
/coverage-guard
配置
编辑此技能目录中的 config.json 以设置阈值:
{
"thresholds": {
"statements": 80,
"branches": 70,
"functions": 75,
"lines": 80
},
"coverageCommand": "npx jest --coverage --coverageReporters=json-summary",
"coverageFile": "coverage/coverage-summary.json"
}
钩子配置
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hook": ".claude/skills/coverage-guard/scripts/check-coverage.sh",
"condition": "command contains 'jest' OR command contains 'vitest' OR command contains 'npm test'"
}
]
}
}
强制执行逻辑
#!/bin/bash
# check-coverage.sh
COVERAGE_FILE="coverage/coverage-summary.json"
THRESHOLD=80
if [ -f "$COVERAGE_FILE" ]; then
STATEMENTS=$(jq '.total.statements.pct' "$COVERAGE_FILE")
BRANCHES=$(jq '.total.branches.pct' "$COVERAGE_FILE")
if (( $(echo "$STATEMENTS < $THRESHOLD" | bc -l) )); then
echo "WARNING: Statement coverage ($STATEMENTS%) below threshold ($THRESHOLD%)"
echo "Coverage dropped — check which files lost coverage."
fi
if (( $(echo "$BRANCHES < 70" | bc -l) )); then
echo "WARNING: Branch coverage ($BRANCHES%) below 70%"
fi
fi
注意事项
- 覆盖率检查会在测试命令运行后执行——如果测试崩溃,则不会生成覆盖率报告
- 必须将 Coverage-summary.json 配置为报告器——默认的 Jest 配置可能不包含它
- 阈值比较使用浮点数——
79.999%会触发低于80%阈值的警告 - 分支覆盖率通常比行覆盖率低 10-15%——请据此设置阈值
评论
支持 Markdown