codecov-coverage · git:20260810.2f916d1 · 2026-08-10 · sha256 708e35c8e041a1a3
codecov-coverage git:20260810.2f916d1A
Immutable. This exact content never changes and is served at /api/v1/blob/708e35c8e041a1a3.
--- name: codecov-coverage description: 在需要通过 Codecov 查询仓库覆盖率、PR 覆盖率影响、commit 覆盖率、文件级覆盖率或覆盖率对比时使用。 allowed-tools: >- Bash(command -v:*) Bash(npm install -g mcporter:*) Bash(mcporter:*) Bash(npx -y mcporter:*) Bash(bash scripts/codecov-*:*) Bash(git remote get-url:*) Bash(git rev-parse:*) Bash(jq:*) --- # Codecov Coverage 通过 `npx -y mcporter` 调用 `@egulatee/mcp-codecov`,查询 Codecov 覆盖率数据。默认只读,不修改 Codecov 或仓库数据。 ## 何时使用 - 查看仓库整体覆盖率 - 分析 PR 的 base/head/patch 覆盖率影响 - 查看某个 commit 的覆盖率详情 - 查看某个文件的逐行覆盖率 - 比较两个分支、tag 或 commit 之间的覆盖率变化 ## 前置条件 - Node.js >= 18 - `mcporter` 可用;若用户说 `mcpporter`,按 `mcporter` 处理,因为 npm 包与可执行名都是 `mcporter` - `jq` 可用;封装脚本依赖 `jq` 解析和格式化 JSON - `CODECOV_TOKEN` 已设置,且必须是 Codecov API Access Token,不是 Upload Token 获取 token:<https://app.codecov.io/account> -> API Access Token。 若本机缺少 `mcporter`,先安装: ```bash npm install -g mcporter ``` 如果缺少 `jq`,提示用户安装 `jq` 后再继续。如果 token 未设置或无效,立即停止并提示用户配置,不要猜测或降级到网页抓取。 ## 安全边界 - 永远不要输出 `CODECOV_TOKEN` 的值 - 不硬编码 owner/repo;封装脚本仅支持从 GitHub remote 自动检测,无法检测时让用户指定 - 只执行查询类操作,不修改 Codecov 上的任何数据 - 不把覆盖率下降直接定性为阻塞,除非用户或项目规则明确要求 ## 推荐调用方式 优先使用 `scripts/` 下的封装脚本;脚本会处理 token 检查、owner/repo 检测和输出格式化。 ```bash # 仓库覆盖率 bash scripts/codecov-repo.sh [--owner OWNER] [--repo REPO] [--branch BRANCH] [--json] # PR 覆盖率影响 bash scripts/codecov-pr.sh <PR_NUMBER> [--owner OWNER] [--repo REPO] [--json] # commit 覆盖率 bash scripts/codecov-commit.sh [SHA] [--owner OWNER] [--repo REPO] [--json] # 覆盖率对比 bash scripts/codecov-compare.sh <BASE> <HEAD> [--owner OWNER] [--repo REPO] [--json] # 文件逐行覆盖率 bash scripts/codecov-file.sh <FILE_PATH> [--owner OWNER] [--repo REPO] [--ref REF] [--json] ``` ## 原始 mcporter 调用 需要更细粒度控制时,直接调用 MCP 工具: ```bash npx -y mcporter call \ --stdio "npx -y @egulatee/mcp-codecov" \ --env CODECOV_TOKEN="$CODECOV_TOKEN" \ --name codecov \ get_repo_coverage \ owner:OWNER repo:REPO ``` 可用工具: - `get_repo_coverage owner: repo: [branch:]` - `get_commit_coverage owner: repo: commit_sha:` - `get_pull_request_coverage owner: repo: pull_number:` - `get_file_coverage owner: repo: file_path: [ref:]` - `compare_coverage owner: repo: base: head:` ## 参数解析 `owner` 和 `repo` 按以下顺序解析: 1. 命令行 `--owner` / `--repo` 2. 当前目录 `git remote get-url origin`(仅支持 GitHub remote 自动解析) 3. 无法解析时停止并提示用户显式指定 `commit_sha` 必须使用完整或可解析的 hex SHA;若 Codecov 返回找不到 commit,要求用户提供完整 40 位 SHA 再重试。 ## 故障处理 - `CODECOV_TOKEN 未设置`:提示用户执行 `export CODECOV_TOKEN="..."`,不要输出 token - `401 Unauthorized`:token 无效或过期,提示重新生成 API Access Token - `404 Not Found`:检查 owner/repo 是否正确、仓库是否已接入 Codecov、目标 ref 是否有覆盖率数据 - `commit_sha not found`:使用完整 40 位 commit SHA - `jq: command not found`:提示安装 `jq`,不要继续执行封装脚本 ## 输出要求 - 默认给中文摘要,包含覆盖率百分比和关键变化 - 百分比保留 Codecov 返回精度;需要手动计算时保留两位小数 - 涉及 PR 时说明 base/head/patch 三类覆盖率 - 涉及文件时优先指出未覆盖行或覆盖率最低的文件 - 结论中区分事实与建议,不要把覆盖率变化夸大成业务风险 ## Smoke Test ```bash bash scripts/codecov-repo.sh --help bash scripts/codecov-pr.sh --help bash scripts/codecov-commit.sh --help bash scripts/codecov-compare.sh --help bash scripts/codecov-file.sh --help bash -n scripts/_common.sh scripts/codecov-*.sh python3 ../_shared/lint-skills.py ``` 预期:help 命令不需要 `CODECOV_TOKEN`;未设置 `CODECOV_TOKEN` 时执行查询类命令应明确报错且不泄露 token。