rebar3_uncovered CI Status][ci-img]][ci] [![Hex.pm Version][hex-img]][hex] [![Minimum Erlang Version][erlang-img] [ License

A Rebar 3 plugin that reports on uncovered lines from tests. Run it after rebar3 eunit or rebar3 ct to see which lines your tests missed. Use --git to narrow the report to lines changed on this branch.

Human-readable output

A machine-readable format is also available for script / CI / LLM consumption. Prefix with QUIET=1 to suppress Rebar's own log messages:

$ QUIET=1 rebar3 uncovered --git --format=raw --context=0 --counts=false
src/gaffer_queue.erl:141             _ = gaffer_hooks:with_hooks(
src/gaffer_queue.erl:142                 Hooks, [gaffer, queue, delete], Name, fun(N) -> N end
src/gaffer_queue.erl:144             ok = gaffer_sup:stop_queue(gaffer_queue_sup:pid(Name)),
src/gaffer_queue.erl:145             persistent_term:erase({gaffer_queue, Name})
src/gaffer_queue.erl:151         {error, not_found} -> ok

Installation

Add the plugin to your project's rebar.config:

{project_plugins, [rebar3_uncovered]}.

To install it globally for all projects, add it to ~/.config/rebar3/rebar.config:

{plugins, [rebar3_uncovered]}.

Usage

rebar3 uncovered [options] [-- path ...]
rebar3 help uncovered

Positional arguments after -- are used as file or directory filters.

Git scopes

Git organizes your working state as layers on top of trunk:

unstaged   # Edits not yet added to the index
staged     # Changes added to the index but not committed
HEAD       # The latest commit on this branch
HEAD~X     # Some intermediary commit between trunk and HEAD
trunk      # Base branch (origin/main, origin/master, …)

--git-scope picks which layer to diff against, which determines what counts as "changed":

Examples

Show uncovered lines in the dirty working tree before committing:

rebar3 uncovered --git --git-scope HEAD

Show uncovered lines on this branch against trunk:

rebar3 uncovered --git

In CI or in LLM tooling, check that all changed lines are covered by tests (raw format, no context lines):

QUIET=1 rebar3 uncovered --git --format=raw --context=0 --counts=false

Show uncovered lines against a specific ref:

rebar3 uncovered --git --git-scope origin/main
rebar3 uncovered --git --git-scope HEAD~3

All Options

Changelog

See the Releases page.

Code of Conduct

Find this project's code of conduct in Contributor Covenant Code of Conduct.

Contributing

First of all, thank you for contributing with your time and energy.

If you want to request a new feature make sure to open an issue so we can discuss it first.

Bug reports and questions are also welcome. If you found a bug, please check that you're using the latest version first. If you have a question, search the issue database as it might have already been answered.

Contributions will be subject to the MIT License. You will retain the copyright.

For more information check out CONTRIBUTING.md.

Security

This project's security policy is made explicit in SECURITY.md.

Conventions

Versions

This project adheres to Semantic Versioning.

License

This project uses the MIT License.