gocovsh

Go Coverage in your terminal: a tool for exploring Go Coverage reports from the command line πŸ’»

GPL-3.0 License

Stars
348
Committers
7

Gocovsh - Go Coverage in your terminal

gocovsh is a tool for exploring Go Coverage reports from the command line.

Don't skip the Giving back section! πŸ’°

Demo below 🎬 πŸ‘‡

There is a Russian word Ковш (pronounced like "Kovsh") which means a ladle or a dipper. "The Big Dipper" is also a part of the constellation Ursa Major, thus the friendly dipper-shaped Gopher mascot, created by Michael Zolotov.

Test Go Report Card codecov go-recipes

Installation

Using Homebrew

brew install orlangure/tap/gocovsh

Pre-built binary

Grab your pre-built binary from the Releases page.

From source

# install latest, probably unreleased version
go install github.com/orlangure/gocovsh@latest

# or install a specific version
go install github.com/orlangure/[email protected]

Usage

  1. Generate Go coverage report at your project's root with

    go test -cover -coverprofile coverage.out
    

    For more information about generating Go coverage reports, see πŸ“ my blog post.

  2. Run gocovsh at the same folder with coverage.out report and go.mod file (go.mod is required).

    gocovsh                        # show all files from coverage report
    git diff --name-only | gocovsh # only show changed files
    git diff | gocovsh             # show coverage on top of current diff
    gocovsh --profile profile.out  # for other coverage profile names
    
  3. Use j/k/enter/esc keys to explore the report. See built-in help for more key-bindings.

Themes

gocovsh supports 4 nice themes (using Catppuccin Theme project) and an ugly default one at this moment. To change the theme, set GOCOVSH_THEME environment variable to one of the following values: mocha, latte, frappe or macchiato:

GOCOVSH_THEME=mocha gocovsh
GOCOVSH_THEME=latte gocovsh
GOCOVSH_THEME=frappe gocovsh
GOCOVSH_THEME=macchiato gocovsh

To always use the same theme, add export GOCOVSH_THEME=<theme name> to your ~/.bashrc, ~/.zshrc or any other file that you use for shell configuration.

Giving back

This is a free and open source project that hopefully helps its users, at least a little. Even though I don't need donations to support it, I understand that there are people that wish to give back anyway. If you are one of them, I encourage you to plant some trees with Tree Nation 🌲 🌳 🌴

If you want me to know about your contribution, make sure to use [email protected] as the recipient email.

Thank you!

Demo

Viewing Go code coverage reports

Only show Go code coverage of changed files

Go code coverage on top of git diff