report

package
v2.1.0 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeduplicateFindings

func DeduplicateFindings(findings []rules.Finding) []rules.Finding

DeduplicateFindings collapses findings that describe the same issue: the same rule at the same file+line (regardless of the job/step it was attributed to), or, for findings without a line, the same rule+file+job+step. Call this before computing the summary so the reported issue count matches the findings emitted by every report format (the JSON and SARIF generators deduplicate internally).

func MarshalIndent

func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error)

MarshalIndent is a placeholder for json.MarshalIndent to avoid import conflicts

func MaskSecrets

func MaskSecrets(evidence string) string

MaskSecrets masks sensitive information in the evidence field of a finding

func SortFindingsBySeverity

func SortFindingsBySeverity(findings []rules.Finding) []rules.Finding

SortFindingsBySeverity sorts findings by severity (Critical, High, Medium, Low, Info)

Types

type CodeContext

type CodeContext struct {
	LineNumber int        `json:"lineNumber"`
	StartLine  int        `json:"startLine"`
	EndLine    int        `json:"endLine"`
	Lines      []CodeLine `json:"lines"`
	Snippet    string     `json:"snippet"`
}

CodeContext represents a snippet of code around a finding.

type CodeLine

type CodeLine struct {
	Line      int    `json:"line"`
	Content   string `json:"content"`
	Highlight bool   `json:"highlight,omitempty"`
}

CodeLine represents a single line of code in a context snippet.

type ComplianceInfo

type ComplianceInfo struct {
	Frameworks   []string          `json:"frameworks"`
	Controls     []string          `json:"controls"`
	Requirements []string          `json:"requirements"`
	Violations   map[string]string `json:"violations"`
}

ComplianceInfo provides compliance framework information

type EnhancedFinding

type EnhancedFinding struct {
	Finding   rules.Finding
	FileLines map[int]string // Line number -> content
	Number    int            // Overall finding number
}

EnhancedFinding wraps a finding with additional formatting context

type EnhancedFormatter

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

EnhancedFormatter provides modern, visually appealing output formatting

func NewEnhancedFormatter

func NewEnhancedFormatter() *EnhancedFormatter

NewEnhancedFormatter creates a new enhanced formatter

func (*EnhancedFormatter) AddFinding

func (ef *EnhancedFormatter) AddFinding(finding rules.Finding, findingNumber int)

AddFinding adds a finding with file context

func (*EnhancedFormatter) FormatAll

func (ef *EnhancedFormatter) FormatAll() string

FormatAll returns a formatted string for all findings

func (*EnhancedFormatter) FormatBoxedFinding

func (ef *EnhancedFormatter) FormatBoxedFinding(finding rules.Finding, number int) string

FormatBoxedFinding returns a visually boxed finding format

func (*EnhancedFormatter) FormatFinding

func (ef *EnhancedFormatter) FormatFinding(enhanced EnhancedFinding) string

FormatFinding returns a formatted string for a single finding

func (*EnhancedFormatter) PrintCompactFinding

func (ef *EnhancedFormatter) PrintCompactFinding(finding rules.Finding, number int) string

PrintCompactFinding prints a compact version of a finding (original style but improved)

type FindingReport

type FindingReport struct {
	rules.Finding
	CodeContext *CodeContext `json:"codeContext,omitempty"`
}

FindingReport augments a finding with code context for report outputs.

type Generator

type Generator struct {
	Result             ScanResult
	Format             string
	Verbose            bool
	FilePath           string
	EnhancedFormatting bool   // Use enhanced formatting for CLI output
	CLIStyle           string // CLI style: "standard", "detailed", "compact", "boxed"
	// contains filtered or unexported fields
}

Generator creates a formatted report from scan results

func NewGenerator

func NewGenerator(result ScanResult, format string, verbose bool, filePath string) *Generator

NewGenerator creates a new report generator

func (*Generator) Generate

func (g *Generator) Generate() error

Generate creates and outputs the report in the specified format

type IntelligenceGenerator

type IntelligenceGenerator struct {
	*Generator
	// contains filtered or unexported fields
}

IntelligenceGenerator creates intelligence-enhanced reports

func NewIntelligenceGenerator

func NewIntelligenceGenerator(result ScanResult, format string, verbose bool, filePath string, enableIntel bool) *IntelligenceGenerator

NewIntelligenceGenerator creates a new intelligence-enhanced report generator

func (*IntelligenceGenerator) GenerateWithIntelligence

func (ig *IntelligenceGenerator) GenerateWithIntelligence() error

GenerateWithIntelligence creates a report enhanced with vulnerability intelligence

type IntelligenceReport

type IntelligenceReport struct {
	ScanResult
	VulnerabilityIntelligence VulnerabilityIntelligence `json:"vulnerability_intelligence"`
	EnhancedFindings          []osv.EnhancedFinding     `json:"enhanced_findings"`
	IntelligenceSummary       IntelligenceSummary       `json:"intelligence_summary"`
}

IntelligenceReport represents a scan result enhanced with vulnerability intelligence

type IntelligenceSummary

type IntelligenceSummary struct {
	ResultSummary
	IntelligenceLevels      map[string]int `json:"intelligence_levels"`
	RiskScoreDistribution   map[string]int `json:"risk_score_distribution"`
	VulnerabilityCategories map[string]int `json:"vulnerability_categories"`
	RecentVulnerabilities   int            `json:"recent_vulnerabilities"`
	KnownExploits           int            `json:"known_exploits"`
}

IntelligenceSummary provides intelligence-enhanced summary statistics

type PolicyAwareReport

type PolicyAwareReport struct {
	Standard         interface{}             `json:"standard_report"`
	PolicyEvaluation PolicyEvaluationSummary `json:"policy_evaluation"`
	ComplianceReport config.ComplianceReport `json:"compliance_report"`
	EnhancedFindings []PolicyEnhancedFinding `json:"enhanced_findings"`
	Recommendations  []PolicyRecommendation  `json:"recommendations"`
	GeneratedAt      time.Time               `json:"generated_at"`
}

PolicyAwareReport extends standard reports with policy information

type PolicyAwareReportGenerator

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

PolicyAwareReportGenerator generates reports with policy evaluation

func NewPolicyAwareReportGenerator

func NewPolicyAwareReportGenerator(cfg *config.Config) *PolicyAwareReportGenerator

NewPolicyAwareReportGenerator creates a new policy-aware report generator

func (*PolicyAwareReportGenerator) GenerateReport

func (parg *PolicyAwareReportGenerator) GenerateReport(findings []rules.Finding, context config.PolicyContext, outputFormat string) (*PolicyAwareReport, error)

GenerateReport generates a policy-aware report

func (*PolicyAwareReportGenerator) PolicyAwareCLIReport

func (parg *PolicyAwareReportGenerator) PolicyAwareCLIReport(findings []rules.Finding, context config.PolicyContext) string

PolicyAwareCLIReport generates enhanced CLI output with policy information

func (*PolicyAwareReportGenerator) PolicyAwareJSONReport

func (parg *PolicyAwareReportGenerator) PolicyAwareJSONReport(findings []rules.Finding, context config.PolicyContext) (string, error)

PolicyAwareJSONReport generates enhanced JSON output with policy information

type PolicyEnhancedFinding

type PolicyEnhancedFinding struct {
	rules.Finding
	PolicyViolations []config.PolicyViolation `json:"policy_violations,omitempty"`
	PolicyExceptions []config.PolicyException `json:"policy_exceptions,omitempty"`
	ComplianceInfo   *ComplianceInfo          `json:"compliance_info,omitempty"`
	RiskScore        int                      `json:"risk_score"`
	EnforcementLevel string                   `json:"enforcement_level,omitempty"`
}

PolicyEnhancedFinding extends Finding with policy information

type PolicyEvaluationSummary

type PolicyEvaluationSummary struct {
	TotalPolicies      int                    `json:"total_policies"`
	PoliciesEvaluated  int                    `json:"policies_evaluated"`
	PolicyViolations   int                    `json:"policy_violations"`
	BlockingViolations int                    `json:"blocking_violations"`
	ErrorViolations    int                    `json:"error_violations"`
	WarningViolations  int                    `json:"warning_violations"`
	ExceptionsApplied  int                    `json:"exceptions_applied"`
	ComplianceStatus   map[string]bool        `json:"compliance_status"`
	PolicyBreakdown    map[string]PolicyStats `json:"policy_breakdown"`
}

PolicyEvaluationSummary summarizes policy evaluation results

type PolicyRecommendation

type PolicyRecommendation struct {
	ID          string   `json:"id"`
	Title       string   `json:"title"`
	Description string   `json:"description"`
	Priority    string   `json:"priority"`
	Actions     []string `json:"actions"`
	Resources   []string `json:"resources"`
}

PolicyRecommendation provides actionable recommendations

type PolicyStats

type PolicyStats struct {
	PolicyID    string `json:"policy_id"`
	PolicyName  string `json:"policy_name"`
	Violations  int    `json:"violations"`
	Exceptions  int    `json:"exceptions"`
	Compliant   bool   `json:"compliant"`
	Enforcement string `json:"enforcement"`
}

PolicyStats provides statistics for individual policies

type ResultSummary

type ResultSummary struct {
	Critical int `json:"critical"`
	High     int `json:"high"`
	Medium   int `json:"medium"`
	Low      int `json:"low"`
	Info     int `json:"info"`
	Total    int `json:"total"`
}

ResultSummary provides a summary of the scan findings by severity

func CalculateSummary

func CalculateSummary(findings []rules.Finding) ResultSummary

CalculateSummary computes the summary statistics for scan findings

type ScanResult

type ScanResult struct {
	Repository      string          `json:"repository"`
	ScanTime        time.Time       `json:"scanTime"`
	Duration        time.Duration   `json:"duration"`
	WorkflowsCount  int             `json:"workflowsCount"`
	RulesCount      int             `json:"rulesCount"`
	Findings        []rules.Finding `json:"findings"`
	Summary         ResultSummary   `json:"summary"`
	SuppressedCount int             `json:"suppressedCount"`
	GeneratedByAST  int             `json:"astGeneratedCount"`
}

ScanResult represents the overall result of a security scan

type ScanResultReport

type ScanResultReport struct {
	Repository      string          `json:"repository"`
	ScanTime        time.Time       `json:"scanTime"`
	Duration        time.Duration   `json:"duration"`
	DurationNs      int64           `json:"durationNs"`
	DurationMs      int64           `json:"durationMs"`
	WorkflowsCount  int             `json:"workflowsCount"`
	RulesCount      int             `json:"rulesCount"`
	Findings        []FindingReport `json:"findings"`
	Summary         ResultSummary   `json:"summary"`
	SuppressedCount int             `json:"suppressedCount"`
	GeneratedByAST  int             `json:"astGeneratedCount"`
}

ScanResultReport represents the JSON report with enriched findings.

type VulnerabilityIntelligence

type VulnerabilityIntelligence struct {
	Enabled              bool      `json:"enabled"`
	QueryTime            time.Time `json:"query_time"`
	QueriesPerformed     int       `json:"queries_performed"`
	VulnerabilitiesFound int       `json:"vulnerabilities_found"`
	HighRiskFindings     int       `json:"high_risk_findings"`
	CVEsFound            []string  `json:"cves_found"`
	DataSource           string    `json:"data_source"`
}

VulnerabilityIntelligence provides metadata about vulnerability correlation

Jump to

Keyboard shortcuts

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