Introducing covpeek - Cross-language Coverage Report CLI Parser
Have you ever struggled to parse coverage reports across different programming languages? Are you tired of writing custom scripts to generate coverage badges or extract coverage data? There’s a better way: covpeek.
covpeek is a cross-language coverage report CLI parser written in Go that makes working with coverage data a breeze. With covpeek, you can parse coverage reports from Rust, Go, TypeScript, JavaScript, and Python with one unified tool. It’s one tool to rule them all!
The Problem
When I started working on a Rust project, I ran into a frustrating problem: I needed to understand the test coverage, but parsing LCOV files manually was tedious. Then I needed to generate coverage badges for the README, compare coverage between commits, and upload reports to SonarQube. Each task required writing custom scripts or using different tools.
I thought: there has to be a better way. Why should we reinvent the wheel for every project and every language? That’s when the idea for covpeek was born.
The Solution
covpeek is a single binary that solves all these problems:
- Parse any coverage format: LCOV (Rust, TypeScript/JavaScript), Go coverage files, Python (Cobertura XML and JSON)
- Auto-detection: No need to specify the format manually - covpeek figures it out
- Multiple outputs: Table view, JSON for automation, CSV for spreadsheets
- Interactive TUI: Explore coverage data with a beautiful terminal interface
- Generate badges: Create SVG badges for your README
- CI/CD integration: Check thresholds, compare commits, upload to SonarQube/Codecov
Why Open Source?
Unlike Autoupdate, I decided to release covpeek as free and open-source software under the AGPL-3.0 license. Why?
- Community-driven development: Coverage parsing benefits from diverse use cases and contributions
- Transparency: Testing tools should be transparent and trustworthy
- Give back: I’ve benefited immensely from open-source tools, and I want to contribute back
Supported Formats
covpeek currently supports:
- LCOV Format: Used by Rust (grcov, tarpaulin) and TypeScript/JavaScript (nyc/Istanbul)
- Go Coverage Format: Native Go coverage files generated by
go test -coverprofile - Python Coverage Formats: Both Cobertura XML and JSON formats
Each format is automatically detected by file extension or content, making covpeek incredibly easy to use.
How to Use
Getting started is simple:
# Install with Go
go install github.com/Chapati-Systems/covpeek/cmd/covpeek@latest
# Or download pre-built binaries from GitHub Releases
Parse a coverage file:
covpeek --file coverage.lcov
Generate a badge:
covpeek badge --file coverage.lcov --output coverage-badge.svg
Launch the interactive TUI:
covpeek --file coverage.lcov --tui
Upload to SonarQube or Codecov:
covpeek upload --to sonarqube --project-key myproject --token $SONAR_TOKEN
covpeek upload --to codecov --repo-token $CODECOV_TOKEN
The Future
This is just the beginning. I have plans to add support for more languages and formats, additional platform integrations, and more features based on community feedback.
Get Involved
covpeek is completely free and open source! Check out the GitHub repository to:
- Download the latest release
- Report bugs or request features
- Contribute code or documentation
- Star the project if you find it useful
Questions?
Please share feedback like feature requests or bug reports on GitHub Issues. Contributions are welcome!
In conclusion, if you’re working with coverage reports across multiple languages, covpeek is the tool you’ve been looking for. With automatic format detection, multiple output formats, and powerful features like badge generation and platform integration, covpeek makes working with coverage data easy and efficient. So why wait? Try covpeek today and simplify your coverage workflow!