lcov
LCOV tooling - finding gaps, parsing coverage files, marker syntax
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
LCOV Tooling
Finding Coverage Gaps
# Run coverage first
make check-coverage
# Uncovered lines
grep "^DA:" reports/coverage/coverage.info | grep ",0$"
# Uncovered branches
grep "^BRDA:" reports/coverage/coverage.info | grep ",0$"
# Uncovered functions
grep "^FNDA:0," reports/coverage/coverage.info
coverage.info Format
SF:/path/to/file.c # Source file
FN:42,function_name # Function at line 42
FNDA:5,function_name # Function called 5 times
DA:45,3 # Line 45 executed 3 times
DA:46,0 # Line 46 never executed (GAP!)
BRDA:50,0,0,2 # Line 50, block 0, branch 0, taken 2 times
BRDA:50,0,1,0 # Line 50, block 0, branch 1, never taken (GAP!)
end_of_record
Key patterns:
-
DA:line,0= uncovered line -
BRDA:line,block,branch,0= uncovered branch -
FNDA:0,name= uncovered function
Coverage Files
| Command | Output |
|---|---|
make check-coverage |
reports/coverage/coverage.info, reports/coverage/summary.txt |
make check-coverage TEST=unit/foo |
reports/coverage/unit/foo.coverage.info, .coverage.txt |
Exclusion Markers
| Marker | Effect |
|---|---|
LCOV_EXCL_LINE |
Exclude entire line |
LCOV_EXCL_BR_LINE |
Exclude branch only |
LCOV_EXCL_START / LCOV_EXCL_STOP |
Block exclusion (wrapper.c only) |
Usage:
assert(ptr != NULL); // LCOV_EXCL_BR_LINE
if (!ptr) PANIC("Invariant violated"); // LCOV_EXCL_BR_LINE
Note: Markers are NOT reliably honored inside static functions. Inline code instead.
See coverage skill for exclusion policy (what's allowed vs forbidden).
Quick Workflow
# 1. Run coverage
make check-coverage
# 2. Check summary
cat reports/coverage/summary.txt
# 3. Find gaps in specific file
grep -A 1000 "SF:.*myfile.c" reports/coverage/coverage.info | \
grep -m 1 -B 1000 "end_of_record" | grep ",0$"
Related Skills
-
coverage- Policy (90% requirement, exclusion rules) -
testability- Refactoring patterns for gaps
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 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!