coverage-analysis

Measures code coverage exercised during fuzzing to assess harness effectiveness and identify blockers.

Updated Apr 5, 2026
One-click install
npx skills add https://github.com/marumo333/atrox --skill coverage-analysis-marumo333
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: coverage-analysis
Source: https://github.com/marumo333/atrox/tree/main/.claude/skills/trailofbits/plugins/testing-handbook-skills/skills/coverage-analysis
Command: npx skills add https://github.com/marumo333/atrox --skill coverage-analysis-marumo333

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Fuzzing campaigns often plateau without clear visibility into which code paths are actually exercised, making it hard to diagnose harness weaknesses, magic value checks, or regressions after harness changes. ## Core Features & Use Cases - Coverage Instrumentation Workflows: Step-by-step builds for LLVM/Clang, GCC/gcovr, and Rust cargo-fuzz coverage instrumentation. - Corpus-Based Coverage Reports: Generate text and HTML reports with llvm-cov or gcovr using the corpus produced after each fuzzing campaign. - Blocker Identification: Detect magic value checks, dead code, and uncovered regions that need dictionary entries or seed inputs. - Use Case: After a libFuzzer campaign stalls, build a coverage-instrumented binary, run it against the corpus, and inspect the HTML report to find an ELF magic value check blocking progress, then add it to the fuzzing dictionary. ## Quick Start Ask the AI to generate an LLVM coverage report for your fuzzing corpus to see which code paths your harness reaches.

Frequently Asked Questions about coverage-analysis

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate code coverage for a fuzzing campaign?▼

Build a separate binary with coverage instrumentation flags like -fprofile-instr-generate -fcoverage-mapping for Clang, run it against your fuzzing corpus, then merge profile data with llvm-profdata and generate reports with llvm-cov.

How to generate coverage reports for Rust cargo-fuzz targets?▼

Install the nightly toolchain with llvm-tools-preview, then run cargo +nightly fuzz coverage <target>. Use cargo cov with rustfilt demangling to produce HTML reports filtered to your crate's source files.

Should I use fuzzer-reported coverage or llvm-cov for comparisons?▼

Use dedicated coverage tools like llvm-cov or gcovr for reproducible measurements. Different fuzzers calculate internal coverage differently, making cross-tool comparisons based on fuzzer statistics meaningless.

Why does coverage generation fail with crashing inputs?▼

A crashing corpus input terminates the execution runtime before profile data is written. Fix crashes first, or fork a child process per input so crashes are isolated and coverage for remaining inputs is preserved.

Can I use AFL++ or libFuzzer instrumentation for coverage builds?▼

No, fuzzer instrumentation like -fsanitize=fuzzer or afl-clang-fast conflicts with profile instrumentation. Build a separate binary with standard Clang or GCC coverage flags while reusing the same harness function.

When should I skip coverage analysis during fuzzing?▼

Skip it when the campaign is actively finding crashes, coverage infrastructure is not set up, or the codebase is so large that full reports are impractical. Fuzzer-internal metrics may suffice in those cases.