severityutils

package
v1.21.7 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2025 License: Apache-2.0 Imports: 12 Imported by: 3

Documentation

Index

Constants

View Source
const (
	MinCveScore float32 = 0.0
	MaxCveScore float32 = 10.0
	// When parsing Sarif level to severity,
	// If the level is not provided, the value is defaulted to be 'Medium'
	SeverityDefaultValue      = Medium
	SarifSeverityRuleProperty = "security-severity"
)

Variables

View Source
var Severities = map[Severity]map[jasutils.ApplicabilityStatus]*SeverityDetails{
	Critical: {
		jasutils.Applicable:                &SeverityDetails{Priority: 30, Score: MaxCveScore, Emoji: "💀", style: color.New(color.BgLightRed, color.LightWhite)},
		jasutils.ApplicabilityUndetermined: &SeverityDetails{Priority: 29, Score: MaxCveScore, Emoji: "💀", style: color.New(color.BgLightRed, color.LightWhite)},
		jasutils.MissingContext:            &SeverityDetails{Priority: 28, Score: MaxCveScore, Emoji: "💀", style: color.New(color.BgLightRed, color.LightWhite)},
		jasutils.NotCovered:                &SeverityDetails{Priority: 27, Score: MaxCveScore, Emoji: "💀", style: color.New(color.BgLightRed, color.LightWhite)},
		jasutils.NotApplicable:             &SeverityDetails{Priority: 6, Score: MaxCveScore, Emoji: "💀", style: color.New(color.Gray)},
	},
	High: {
		jasutils.Applicable:                &SeverityDetails{Priority: 26, Score: 8.9, Emoji: "🔥", style: color.New(color.Red)},
		jasutils.ApplicabilityUndetermined: &SeverityDetails{Priority: 25, Score: 8.9, Emoji: "🔥", style: color.New(color.Red)},
		jasutils.MissingContext:            &SeverityDetails{Priority: 24, Score: 8.9, Emoji: "🔥", style: color.New(color.Red)},
		jasutils.NotCovered:                &SeverityDetails{Priority: 23, Score: 8.9, Emoji: "🔥", style: color.New(color.Red)},
		jasutils.NotApplicable:             &SeverityDetails{Priority: 5, Score: 8.9, Emoji: "🔥", style: color.New(color.Gray)},
	},
	Medium: {
		jasutils.Applicable:                &SeverityDetails{Priority: 22, Score: 6.9, Emoji: "🎃", style: color.New(color.Yellow)},
		jasutils.ApplicabilityUndetermined: &SeverityDetails{Priority: 21, Score: 6.9, Emoji: "🎃", style: color.New(color.Yellow)},
		jasutils.MissingContext:            &SeverityDetails{Priority: 20, Score: 6.9, Emoji: "🎃", style: color.New(color.Yellow)},
		jasutils.NotCovered:                &SeverityDetails{Priority: 19, Score: 6.9, Emoji: "🎃", style: color.New(color.Yellow)},
		jasutils.NotApplicable:             &SeverityDetails{Priority: 4, Score: 6.9, Emoji: "🎃", style: color.New(color.Gray)},
	},
	Low: {
		jasutils.Applicable:                &SeverityDetails{Priority: 18, Score: 3.9, Emoji: "👻"},
		jasutils.ApplicabilityUndetermined: &SeverityDetails{Priority: 17, Score: 3.9, Emoji: "👻"},
		jasutils.MissingContext:            &SeverityDetails{Priority: 16, Score: 3.9, Emoji: "👻"},
		jasutils.NotCovered:                &SeverityDetails{Priority: 15, Score: 3.9, Emoji: "👻"},
		jasutils.NotApplicable:             &SeverityDetails{Priority: 3, Score: 3.9, Emoji: "👻", style: color.New(color.Gray)},
	},
	Information: {
		jasutils.Applicable:                &SeverityDetails{Priority: 14, Score: MinCveScore, Emoji: "ℹ️", style: color.New(color.Blue)},
		jasutils.ApplicabilityUndetermined: &SeverityDetails{Priority: 13, Score: MinCveScore, Emoji: "ℹ️", style: color.New(color.Blue)},
		jasutils.MissingContext:            &SeverityDetails{Priority: 12, Score: MinCveScore, Emoji: "ℹ️", style: color.New(color.Blue)},
		jasutils.NotCovered:                &SeverityDetails{Priority: 11, Score: MinCveScore, Emoji: "ℹ️", style: color.New(color.Blue)},
		jasutils.NotApplicable:             &SeverityDetails{Priority: 2, Score: MinCveScore, Emoji: "ℹ️", style: color.New(color.Gray)},
	},
	Unknown: {
		jasutils.Applicable:                &SeverityDetails{Priority: 10, Score: MinCveScore, Emoji: "😐"},
		jasutils.ApplicabilityUndetermined: &SeverityDetails{Priority: 9, Score: MinCveScore, Emoji: "😐"},
		jasutils.MissingContext:            &SeverityDetails{Priority: 8, Score: MinCveScore, Emoji: "😐"},
		jasutils.NotCovered:                &SeverityDetails{Priority: 7, Score: MinCveScore, Emoji: "😐"},
		jasutils.NotApplicable:             &SeverityDetails{Priority: 1, Score: MinCveScore, Emoji: "😐", style: color.New(color.Gray)},
	},
}

Functions

func CompareSeverity

func CompareSeverity(severity1, severity2 Severity) int

CompareSeverity compares two severities and returns the difference in priority If severity1 is more severe than severity2, the result will be positive

func CreateSeverityRating added in v1.20.0

func CreateSeverityRating(severity Severity, applicabilityStatus jasutils.ApplicabilityStatus, service *cyclonedx.Service) cyclonedx.VulnerabilityRating

func GetAsDetails

func GetAsDetails(severity Severity, applicabilityStatus jasutils.ApplicabilityStatus, pretty bool) formats.SeverityDetails

func GetCvssScore added in v1.20.0

func GetCvssScore(cvssScore string) *float64

func GetSeverityIcon added in v1.7.2

func GetSeverityIcon(severity Severity) string

func GetSeverityPriority

func GetSeverityPriority(severity Severity, applicabilityStatus jasutils.ApplicabilityStatus) int

func GetSeverityScore

func GetSeverityScore(severity Severity, applicabilityStatus jasutils.ApplicabilityStatus) float32

func GetSeverityScoreFloat64 added in v1.20.0

func GetSeverityScoreFloat64(severity Severity, applicabilityStatus jasutils.ApplicabilityStatus) *float64

func SeverityToCycloneDxSeverity added in v1.20.0

func SeverityToCycloneDxSeverity(severity Severity) cyclonedx.Severity

Types

type SarifSeverityLevel

type SarifSeverityLevel string
const (
	LevelError   SarifSeverityLevel = "error"
	LevelWarning SarifSeverityLevel = "warning"
	LevelInfo    SarifSeverityLevel = "info"
	LevelNote    SarifSeverityLevel = "note"
	LevelNone    SarifSeverityLevel = "none"
)

func GetSarifSeverityLevel

func GetSarifSeverityLevel(severity string) SarifSeverityLevel

func ParseToSarifSeverityLevel

func ParseToSarifSeverityLevel(sarifSeverity string) (parsed SarifSeverityLevel, err error)

func SeverityToSarifSeverityLevel

func SeverityToSarifSeverityLevel(severity Severity) SarifSeverityLevel

func (SarifSeverityLevel) String

func (s SarifSeverityLevel) String() string

type Severity

type Severity string
const (
	Critical    Severity = "Critical"
	High        Severity = "High"
	Medium      Severity = "Medium"
	Low         Severity = "Low"
	Information Severity = "Information"
	Unknown     Severity = "Unknown"
)

func CycloneDxSeverityToSeverity added in v1.20.0

func CycloneDxSeverityToSeverity(severity cyclonedx.Severity) Severity

func GetSeverity

func GetSeverity(severity string) Severity

func MostSevereSeverity added in v1.20.0

func MostSevereSeverity(severities ...Severity) Severity

func ParseSeverity

func ParseSeverity(severity string, sarifSeverity bool) (parsed Severity, err error)

func ParseToSeverity

func ParseToSeverity(severity string) (parsed Severity, err error)

func (Severity) String

func (s Severity) String() string

type SeverityDetails

type SeverityDetails struct {
	Priority int
	// for GitHub Security Alerts
	Score float32
	// Pretty format
	Emoji string
	// contains filtered or unexported fields
}

func GetSeverityDetails

func GetSeverityDetails(severity Severity, applicabilityStatus jasutils.ApplicabilityStatus) *SeverityDetails

func ParseForDetails

func ParseForDetails(severity string, sarifSeverity bool, applicabilityStatus jasutils.ApplicabilityStatus) (details *SeverityDetails, err error)

func (SeverityDetails) ToDetails

func (sd SeverityDetails) ToDetails(severity Severity, pretty bool) formats.SeverityDetails

func (SeverityDetails) ToString

func (sd SeverityDetails) ToString(severity Severity, pretty bool) string

Jump to

Keyboard shortcuts

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