package cover

import "github.com/open-policy-agent/opa/v1/cover"

Package cover reports coverage on modules.

Index

Types

type Cover

type Cover struct {
	// contains filtered or unexported fields
}

Cover computes and reports on coverage.

func New

func New() *Cover

New returns a new Cover object.

func (*Cover) Config

func (*Cover) Config() topdown.TraceConfig

Config returns the standard Tracer configuration for the Cover tracer

func (*Cover) Enabled

func (*Cover) Enabled() bool

Enabled returns true if coverage is enabled.

func (*Cover) Report

func (c *Cover) Report(modules map[string]*ast.Module) (report Report)

Report returns a coverage Report for the given modules.

func (*Cover) Trace

func (c *Cover) Trace(event *topdown.Event)

Trace updates the coverage state. Deprecated: Use TraceEvent instead.

func (*Cover) TraceEvent

func (c *Cover) TraceEvent(event topdown.Event)

TraceEvent updates the coverage state.

type CoverageThresholdError

type CoverageThresholdError struct {
	Coverage  float64
	Threshold float64
	Report    *Report
}

CoverageThresholdError represents an error raised when the global code coverage percentage is lower than the specified threshold.

func (*CoverageThresholdError) Error

func (e *CoverageThresholdError) Error() string

type FileReport

type FileReport struct {
	Covered         []Range `json:"covered,omitempty"`
	NotCovered      []Range `json:"not_covered,omitempty"`
	CoveredLines    int     `json:"covered_lines,omitempty"`
	NotCoveredLines int     `json:"not_covered_lines,omitempty"`
	Coverage        float64 `json:"coverage,omitempty"`
}

FileReport represents a coverage report for a single file.

func (*FileReport) IsCovered

func (fr *FileReport) IsCovered(row int) bool

IsCovered returns true if the row is marked as covered in the report.

func (*FileReport) IsNotCovered

func (fr *FileReport) IsNotCovered(row int) bool

IsNotCovered returns true if the row is marked as NOT covered in the report. This is not the same as simply not being reported. For example, certain statements like imports are not included in the report.

type Position

type Position struct {
	Row int `json:"row"`
}

Position represents a file location.

type PositionSlice

type PositionSlice []Position

PositionSlice is a collection of position that can be sorted.

func (PositionSlice) Sort

func (sl PositionSlice) Sort()

Sort sorts the slice by line number.

type Range

type Range struct {
	Start Position `json:"start"`
	End   Position `json:"end"`
}

Range represents a range of positions in a file.

func (Range) In

func (r Range) In(row int) bool

In returns true if the row is inside the range.

type Report

type Report struct {
	Files           map[string]*FileReport `json:"files"`
	CoveredLines    int                    `json:"covered_lines"`
	NotCoveredLines int                    `json:"not_covered_lines"`
	Coverage        float64                `json:"coverage"`
}

Report represents a coverage report for a set of files.

func (Report) IsCovered

func (r Report) IsCovered(file string, row int) bool

IsCovered returns true if the row in the given file is covered.

Source Files

cover.go

Version
v1.4.2 (latest)
Published
May 2, 2025
Platform
linux/amd64
Imports
6 packages
Last checked
5 hours ago

Tools for package owners.