report

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: May 11, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package report provides formatting utilities for scan results.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatHTML

func FormatHTML(data ReportData) (string, error)

FormatHTML generates a self-contained HTML report.

func FormatJSON

func FormatJSON(data ReportData) (string, error)

FormatJSON renders the report as machine-readable JSON.

func FormatJUnit

func FormatJUnit(data ReportData) (string, error)

FormatJUnit renders findings as JUnit XML for CI integration. Each check becomes a test suite, each finding becomes a failed test case. Pages with no findings for a check get a passing test case.

func FormatMarkdown

func FormatMarkdown(data ReportData) string

FormatMarkdown renders the report as a Markdown document suitable for GitHub PR comments or issue bodies.

func FormatSARIF added in v0.5.0

func FormatSARIF(data ReportData) (string, error)

FormatSARIF renders findings as SARIF 2.1.0 JSON.

func FormatTerminal

func FormatTerminal(data ReportData) string

FormatTerminal renders a human-readable report for terminal output.

Types

type Finding

type Finding struct {
	Check    string   `json:"check"`
	Severity Severity `json:"severity"`
	URL      string   `json:"url"`
	Element  string   `json:"element,omitempty"`
	Message  string   `json:"message"`
	Fix      string   `json:"fix,omitempty"`
	Evidence string   `json:"evidence,omitempty"`
}

Finding for report rendering.

type JUnitFailure

type JUnitFailure struct {
	Message string `xml:"message,attr"`
	Type    string `xml:"type,attr"`
	Body    string `xml:",chardata"`
}

type JUnitTestCase

type JUnitTestCase struct {
	XMLName   xml.Name      `xml:"testcase"`
	Name      string        `xml:"name,attr"`
	Classname string        `xml:"classname,attr"`
	Time      string        `xml:"time,attr"`
	Failure   *JUnitFailure `xml:"failure,omitempty"`
}

type JUnitTestSuite

type JUnitTestSuite struct {
	XMLName  xml.Name        `xml:"testsuite"`
	Name     string          `xml:"name,attr"`
	Tests    int             `xml:"tests,attr"`
	Failures int             `xml:"failures,attr"`
	Time     string          `xml:"time,attr"`
	Cases    []JUnitTestCase `xml:"testcase"`
}

type JUnitTestSuites

type JUnitTestSuites struct {
	XMLName  xml.Name         `xml:"testsuites"`
	Name     string           `xml:"name,attr"`
	Tests    int              `xml:"tests,attr"`
	Failures int              `xml:"failures,attr"`
	Time     string           `xml:"time,attr"`
	Suites   []JUnitTestSuite `xml:"testsuite"`
}

type ReportData

type ReportData struct {
	Target      string        `json:"target"`
	Findings    []Finding     `json:"findings"`
	CrawledURLs int           `json:"crawled_urls"`
	Duration    time.Duration `json:"duration"`
	Stats       struct {
		BySeverity map[string]int `json:"by_severity"`
		ByCheck    map[string]int `json:"by_check"`
	} `json:"stats"`
}

ReportData holds all data needed for rendering.

type Severity

type Severity int

Severity mirrors the public type.

const (
	SeverityInfo Severity = iota
	SeverityLow
	SeverityMedium
	SeverityHigh
	SeverityCritical
)

func (Severity) String

func (s Severity) String() string

Jump to

Keyboard shortcuts

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