Skip to content
Back to skills

Code Coverage With Gcov

ASecurity

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

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
testingc++bashtesting

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add David-Li0406/meta-skill-evloving --skill code-coverage-with-gcov --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Coverage With Gcov?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Code Coverage With Gcov
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/david-li0406-code-coverage-with-gcov/badge)](https://www.skillsdirectory.com/skills/david-li0406-code-coverage-with-gcov)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Code Coverage with gcov
description: Add gcov code coverage instrumentation to C/C++ projects
version: 1.0
author: Claude
tags:
  - coverage
  - gcov
  - testing
---

# Code Coverage with gcov

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

## How It Works

### Build with Coverage
```bash
gcc --coverage -o program source.c
```

### Run Program
```bash
./program
# Creates .gcda files with execution data
```

### Generate Reports

**Text report:**
```bash
gcov source.c
# Creates source.c.gcov with line-by-line coverage
```

**HTML report:**
```bash
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
```makefile
ENABLE_COVERAGE ?= 0
ifeq ($(ENABLE_COVERAGE),1)
    CFLAGS += --coverage
    LDFLAGS += --coverage
endif
```

### CMake
```cmake
option(ENABLE_COVERAGE "Enable coverage" OFF)
if(ENABLE_COVERAGE)
    add_compile_options(--coverage)
    add_link_options(--coverage)
endif()
```

## When User Requests Coverage

### Steps
1. Detect build system (Makefile/CMake/other)
2. Add `--coverage` to CFLAGS and LDFLAGS
3. Clean previous build: `make clean` or `rm -f *.gcda *.gcno`
4. Build with coverage: `make ENABLE_COVERAGE=1` or `cmake -DENABLE_COVERAGE=ON`
5. Run tests: `make test` or `./test_suite`
6. Generate report: `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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…