Codecov
Codecov (by Sentry) is a coverage reporting service that integrates with GitHub, GitLab, and Bitbucket. It visualizes code coverage, tracks trends over time, and provides coverage feedback directly on pull requests.
covdbg outputs LCOV format, which Codecov supports natively. This makes integration straightforward—generate an LCOV file from your coverage run and upload it to Codecov.
Prerequisites
- Create an account at codecov.io
- Add your repository to Codecov
- Copy your upload token and add it as a repository secret named
CODECOV_TOKEN
Basic Usage
For simple projects where all code is exercised through tests, you only need to run tests and upload.
Step 1: Run Tests with Coverage
- name: Run tests with coverage
run: covdbg --output coverage.covdb --config .covdbg.yaml tests.exeCode language: YAML (yaml)
Step 2: Convert to LCOV
- name: Convert to LCOV
run: covdbg convert --input coverage.covdb --format LCOV --output coverage.lcovCode language: YAML (yaml)
Step 3: Upload to Codecov
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
files: coverage.lcov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}Code language: YAML (yaml)
Advanced Usage
For projects with static libraries, multiple binaries, or code that isn’t directly executed by tests, you’ll want to include uncovered lines in your report. The analyze command extracts all coverable lines from binaries, ensuring code that was never executed still appears as uncovered (rather than being omitted entirely).
Step 1: Run Tests with Coverage
- name: Run tests with coverage
run: covdbg --output tests.covdb --config .covdbg.yaml tests.exeCode language: YAML (yaml)
Step 2: Analyze Binaries for Uncovered Code
Extract symbol information from your application binaries. This captures all coverable lines, including code in static libraries that tests may not exercise:
- name: Analyze binaries
run: |
covdbg analyze --input app.exe --output app.covdb --config .covdbg.yaml
covdbg analyze --input app-ui.exe --output app-ui.covdb --config .covdbg.yamlCode language: YAML (yaml)
Step 3: Merge Coverage Databases
Combine the test coverage with the symbol databases:
- name: Merge coverage databases
run: covdbg merge --input tests.covdb --input app.covdb --input app-ui.covdb --output merged.covdbCode language: YAML (yaml)
Step 4: Convert to LCOV
- name: Convert to LCOV
run: covdbg convert --input merged.covdb --format LCOV --output coverage.lcovCode language: YAML (yaml)
Step 5: Upload to Codecov
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
files: coverage.lcov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}Code language: YAML (yaml)
What You Get
Once configured, Codecov provides coverage feedback on every pull request, tracks how coverage changes over time, and offers a dashboard to explore coverage at the file and line level. Visit codecov.io to configure thresholds, notifications, and other project settings.