Agent Skills › gadievron/raptor › Code Coverage with gcov

Code Coverage with gcov

GitHub

为C/C++项目添加gcov代码覆盖率分析,集成Makefile/CMake构建系统。本次更新引入沙箱机制隔离不可信构建产物与执行文件,确保编译、运行及报告生成的安全性。

.claude/skills/crash-analysis/gcov-coverage/SKILL.md gadievron/raptor

Trigger Scenarios

需要分析C/C++代码测试覆盖率 配置gcov或gcovr生成覆盖率报告

Install

npx skills add gadievron/raptor --skill Code Coverage with gcov -g -y
More Options

Non-standard path

npx skills add https://github.com/gadievron/raptor/tree/main/.claude/skills/crash-analysis/gcov-coverage -g -y

Use without installing

npx skills use gadievron/raptor@Code Coverage with gcov

指定 Agent (Claude Code)

npx skills add gadievron/raptor --skill Code Coverage with gcov -a claude-code -g -y

安装 repo 全部 skill

npx skills add gadievron/raptor --all -g -y

预览 repo 内 skill

npx skills add gadievron/raptor --list

SKILL.md

Frontmatter
{
    "name": "Code Coverage with gcov",
    "tags": [
        "coverage",
        "gcov",
        "testing"
    ],
    "author": "Claude",
    "version": 1,
    "description": "Add gcov code coverage instrumentation to C\/C++ projects",
    "user-invocable": false
}

Code Coverage with gcov

Purpose

Instrument C/C++ programs with gcov to measure test coverage.

Containment

The instrumented project is untrusted — its build scripts and the produced binary execute arbitrary code, and the .gcda/.gcno files that binary emits are untrusted bytes parsed by gcov/gcovr. Run every build, target-binary/test-suite execution, and gcov/gcovr invocation via libexec/raptor-run-sandboxed --output-dir <dir> <cmd> [args...] (--output-dir = the directory the command writes into). If a sandboxed step fails, fix the sandboxed invocation — never run the target's build system, binary, or the coverage extraction bare.

How It Works

Build with Coverage (sandboxed)

libexec/raptor-run-sandboxed --output-dir <project-dir> gcc --coverage -o program source.c

Run Program (sandboxed)

libexec/raptor-run-sandboxed --output-dir <project-dir> <project-dir>/program
# Creates .gcda files with execution data

Generate Reports

Text report (sandboxed — gcov parses the untrusted .gcda/.gcno bytes):

libexec/raptor-run-sandboxed --output-dir <project-dir> gcov source.c
# Creates source.c.gcov with line-by-line coverage

HTML report (sandboxed):

libexec/raptor-run-sandboxed --output-dir <project-dir> gcovr --html-details -o coverage.html

Coverage Flags

  • --coverage (shorthand for -fprofile-arcs -ftest-coverage -lgcov)
  • Add to both CFLAGS and LDFLAGS

Build System Integration

Makefile

ENABLE_COVERAGE ?= 0
ifeq ($(ENABLE_COVERAGE),1)
    CFLAGS += --coverage
    LDFLAGS += --coverage
endif

CMake

option(ENABLE_COVERAGE "Enable coverage" OFF)
if(ENABLE_COVERAGE)
    add_compile_options(--coverage)
    add_link_options(--coverage)
endif()

When User Requests Coverage

Steps

All build/run/report commands below go through libexec/raptor-run-sandboxed --output-dir <project-dir> ... (every make target — clean included — executes the untrusted Makefile's commands; rm -f *.gcda *.gcno is your own command and needs no wrapper):

  1. Detect build system (Makefile/CMake/other)
  2. Add --coverage to CFLAGS and LDFLAGS
  3. Clean previous build: libexec/raptor-run-sandboxed --output-dir <project-dir> make clean (or bare rm -f *.gcda *.gcno)
  4. Build with coverage: libexec/raptor-run-sandboxed --output-dir <project-dir> make ENABLE_COVERAGE=1 (or the cmake -DENABLE_COVERAGE=ON + build equivalent, same wrapper)
  5. Run tests: libexec/raptor-run-sandboxed --output-dir <project-dir> make test (or the project's test binary, same wrapper)
  6. Generate report: libexec/raptor-run-sandboxed --output-dir <project-dir> gcovr --html-details coverage.html --print-summary
  7. Present summary and path to HTML report

Output

Text (.gcov files):

        -:    0:Source:main.c
        5:   42:    int x = 10;
    #####:   43:    unused_code();
  • 5: = executed 5 times
  • #####: = not executed
  • -: = non-executable

HTML: Interactive report with color-coded coverage

Metrics

  • Line coverage: Executed lines / total lines
  • Branch coverage: Taken branches / total branches
  • Function coverage: Called functions / total functions

Target: 80%+ line coverage, 70%+ branch coverage

Version History

  • 1a091b7 Current 2026-10-19 05:54

    引入沙箱机制以隔离不可信的构建脚本和二进制文件,所有构建、测试执行及覆盖率提取步骤均通过沙箱运行,提升安全性。

  • 91a9686 2026-07-24 22:16

Same Skill Collection

.claude/skills/audit/SKILL.md
.claude/skills/code-understanding/SKILL.md
.claude/skills/crash-analysis/function-tracing/SKILL.md
.claude/skills/crash-analysis/line-execution-checker/SKILL.md
.claude/skills/crash-analysis/rr-debugger/SKILL.md
.claude/skills/exploitability-validation/SKILL.md
.claude/skills/frida/SKILL.md
.claude/skills/oss-forensics/github-archive/SKILL.md
.claude/skills/oss-forensics/github-commit-recovery/SKILL.md
.claude/skills/oss-forensics/github-evidence-kit/SKILL.md
.claude/skills/oss-forensics/github-wayback-recovery/SKILL.md
.claude/skills/oss-forensics/orchestration/SKILL.md

Metadata

Files
0
Version
1a091b7
Hash
4f5a76aa
Indexed
2026-07-24 22:16

홈 - 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-21 06:46
浙ICP备14020137号-1