mcpField
C
coverage-guard

coverage-guard

github.com/proffesor-for-testing测试与质量51961 次安装今天更新
代码仓库

关于 coverage-guard

在测试命令运行后检查覆盖率,并在低于配置阈值时发出警告。适用于希望及时发现覆盖率变化、但不阻止测试执行的团队。

主要功能

  1. 01在测试运行后检查覆盖率
  2. 02将结果与配置阈值比较
  3. 03覆盖率下降时发出警告
  4. 04支持配置覆盖率命令

适用场景

  1. 01发现测试运行后的覆盖率下降
  2. 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