coverage
Coverage policy - 90% requirement and exclusion rules
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Coverage Policy
The Requirement
90% coverage of Lines, Functions, and Branches for the ENTIRE codebase.
- 90% of ALL code, not just new code
- A single uncovered line or branch in ANY file blocks ALL commits
- Fix ALL gaps before committing
Decision Framework
When you encounter uncovered code:
Can this code path execute in production?
├─ No → ACCEPT exclusion (assert/PANIC only)
└─ Yes
└─ What triggers it?
├─ User input / External data → MUST TEST
├─ Environment / IO failure → WRAP AND MOCK (see mocking skill)
├─ Vendor library error → WRAP AND MOCK
├─ OOM condition → REFACTOR to PANIC (see testability skill)
├─ Function can never fail → REFACTOR res_t to void
└─ Broken invariant → REFACTOR to PANIC
Exclusion Policy
Allowed (LCOV_EXCL_BR_LINE only)
-
assert()- Compiled out in release builds -
PANIC()- Invariant violations that terminate
Must be single-line. Multi-line blocks require refactoring.
Never Exclude
- Defensive programming checks (test them)
- Library error returns (wrap and mock)
- System call failures (wrap and mock)
- "Should never happen" branches (PANIC if truly impossible)
- Any code reachable at runtime
If it can execute in production, it must be tested.
Critical Rules
- Never use exclusions without explicit user permission
- Never change LCOV_EXCL_COVERAGE in Makefile without permission
- Never generate HTML coverage reports (slow, unnecessary)
Incremental Progress
While 90% is the goal, progress toward 90% is valid work:
- Easy wins first
- Commit incrementally
- Respect context limits
Verification
make check-coverage
All three metrics must show 90%.
Related Skills
-
lcov- Finding gaps, reading coverage files, marker syntax -
testability- Refactoring patterns for hard-to-test code -
mocking- Testing external dependencies
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!