nanovision

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2026 License: Apache-2.0

README

alt text
nanovision

The code coverage visualization tool that understands your code

Here is an example report, its a self coverage report of the nanovision project.

For more details check the docs

Build Status Go Report Card License GitHub Downloads (all assets, all releases)


nanovision converts coverage reports (Cobertura, GoCover, GCov) into human-readable visualizations.

View Example Report   |   Read the Docs


nanovision screenshot

Why nanovision?

While many CI tools give you a simple percentage, nanovision helps you understand what is covered and why it matters.

  • High Performance: Written in Go. Fast parsing, low memory footprint.
  • Report Merging: Combine Unit, Integration reports into a single unified view.
  • Patch Coverage: Analyze coverage specifically on new code (using diffs) to stop technical debt before it merges.
  • Deep Analysis: Calculates cyclomatic complexity and method/functions level metrics.
  • Modern UI: Generates a static, html pages that are easy to host anywhere.

Supported Formats

Input Formats Output Formats
Cobertura HTML
Go Cover Text Summary
GCov LCOV
Raw JSON

Installation

Windows

winget install nanovision

Linux

curl -sL https://raw.githubusercontent.com/IgorBayerl/nanovision/main/scripts/install.sh | bash

Or downdload From Releases

Download the binaries for Windows or Linux from the Releases Page.

GitHub Downloads (all assets, all releases)

Quick Start

0. Check nanovision instalation

nanovision -version
nanovision -help

1. Generate a basic HTML report

nanovision -report="coverage.out" -sourcedirs="."

2. Merge multiple reports

Combine coverage from different languages or test suites:

nanovision -report="cobertura.xml;gocover.out" -sourcedirs="src/csharp;src/go"

3. Patch Coverage (Diff Analysis)

Focus only on the lines changed in your branch (great for PR checks):

# 1. Generate a diff file
git diff main > changes.diff

# 2. Run nanovision with the diff flag
nanovision -report="coverage.out" -sourcedirs="." -diff="changes.diff"

Configuration

You can run nanovision entirely via CLI flags, or use a nanovision.yaml file for complex setups (like file filtering, risk thresholds, and excluded paths).

See the Configuration Documentation for details.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for details on setting up the dev environment (Devcontainer included).

License

Licensed under the Apache 2.0 License.

Credits

Star History

Star History Chart

Directories

Path Synopsis
internal
diagnostics
Package diagnostics is the single source of truth that converts the risk-annotated coverage tree (model.SummaryTree, already carrying per-node Statuses from the status.Annotate stage) into a flat list of editor-style diagnostics ("problems").
Package diagnostics is the single source of truth that converts the risk-annotated coverage tree (model.SummaryTree, already carrying per-node Statuses from the status.Annotate stage) into a flat list of editor-style diagnostics ("problems").
enricher
Package cache provides a content-addressed in-memory cache for static analysis results, backed by optional disk persistence.
Package cache provides a content-addressed in-memory cache for static analysis results, backed by optional disk persistence.
filesystem
Package filesystem provides abstractions for filesystem operations to enable easier testing and mocking of file system interactions.
Package filesystem provides abstractions for filesystem operations to enable easier testing and mocking of file system interactions.
filtering
Package filtering provides a robust mechanism for including or excluding elements (like assemblies, classes, or files) from a report based on user-defined patterns.
Package filtering provides a robust mechanism for including or excluding elements (like assemblies, classes, or files) from a report based on user-defined patterns.
reporter/annotations
Package annotations emits coverage diagnostics as a human-readable Markdown file - a flat "Problems" list grouped by file, mirroring what an editor's problems panel shows.
Package annotations emits coverage diagnostics as a human-readable Markdown file - a flat "Problems" list grouped by file, mirroring what an editor's problems panel shows.
reporter/sarif
Package sarif emits coverage diagnostics as a SARIF 2.1.0 file.
Package sarif emits coverage diagnostics as a SARIF 2.1.0 file.
status
Package status centralizes the logic for classifying coverage metrics into risk levels (e.g., "danger", "warning", "safe").
Package status centralizes the logic for classifying coverage metrics into risk levels (e.g., "danger", "warning", "safe").
This script automates fetching and setting up Tree-sitter grammars for a Go project.
This script automates fetching and setting up Tree-sitter grammars for a Go project.
tree-sitter

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL