跳到正文
cccskills
免费在 GitHub 公开

Code Coverage with gcov

Add gcov code coverage instrumentation to C/C++ projects

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md3.4 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

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

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

audit

免费

Hypothesis-driven, tool-grounded security review of coverage gaps

中文简介正在准备中。当前显示原文说明。

gadievron/raptor39212026年10月19日 更新

Provides adversarial code comprehension for security research, mapping architecture, tracing data flows, and hunting vulnerability variants to build ground-truth understanding before or alongside static analysis.

中文简介正在准备中。当前显示原文说明。

gadievron/raptor39212026年10月19日 更新

Multi-stage pipeline for validating that vulnerability findings are real, reachable, and exploitable, preventing wasted effort on hallucinated findings, dead code paths, or findings with unrealistic preconditions.

中文简介正在准备中。当前显示原文说明。

gadievron/raptor39212026年10月19日 更新

frida

免费

Dynamic instrumentation via Frida - attach to or spawn a process, load a JS hook script, capture send() events into a lifecycle-managed run directory. Supports local, USB-attached, and remote frida-server targets.

中文简介正在准备中。当前显示原文说明。

gadievron/raptor39212026年10月19日 更新

Instrument C/C++ with -finstrument-functions for execution tracing and Perfetto visualisation

中文简介正在准备中。当前显示原文说明。

gadievron/raptor39212026年10月19日 更新

Investigate GitHub security incidents using tamper-proof GitHub Archive data via BigQuery. Use when verifying repository activity claims, recovering deleted PRs/branches/tags/repos, attributing actions to actors, or reconstructing attack timelines. Provides immutable forensic evidence of all public GitHub events since 2011.

中文简介正在准备中。当前显示原文说明。

gadievron/raptor39212026年10月19日 更新

查看 gadievron 的全部技能

报告此技能的问题