simplecov-ruby / simplecov-ruby/simplecov

Bundle LCOV, Cobertura, and SARIF formatters

Open
#1,266 4 comments 0 reactions 1 assignee View on GitHub

@sferik is already working on this.

Since Aug 13, 2026.

Dominant language
Ruby
Stars
4.9k
Forks
578
Avg merge
7h 6m
Merged PRs (30d)
6

Description

We absorbed simplecov-html and simplecov_json_formatter into the gem. The three formats that downstream tools actually consume are still third-party gems.

  • LCOV is the lingua franca. Coveralls, Codecov, genhtml, and the Coverage Gutters extension for VS Code all read it.
  • Cobertura XML is what Jenkins, GitLab, and Azure Pipelines ingest.
  • SARIF puts uncovered lines into GitHub code scanning, which is how they get annotated on the diff without a bot account posting comments.

Each one is a few hundred lines against SourceFile and a fixture-based spec, and each replaces a dependency that projects carry for no reason other than getting their numbers into a service. Bundling them also means the formats stay correct when the resultset shape changes, which is not true of a formatter gem that nobody has touched since branch coverage landed.

The related cheap win is --annotate github on simplecov uncovered, emitting ::warning file=lib/foo.rb,line=41::Line not covered. That gets inline diff annotations in a plain workflow with no upload step and no code scanning permissions.

Prior art for bundling rather than farming out: go tool cover writes its own profile format and coverage.py ships xml, lcov, json, and html in the box.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.