Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ go.work.sum
cli-v2
codacy-cli
**/.codacy/logs/
.codacy/


#Ignore cursor AI rules
Expand Down
22 changes: 15 additions & 7 deletions tools/trivyConfigCreator.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ import (

// CreateTrivyConfig generates a Trivy configuration based on the tool configuration
func CreateTrivyConfig(config []domain.PatternConfiguration) string {

// Default settings - include all severities and scanners
includeLow := true
includeMedium := true
includeHigh := true
includeCritical := true
includeSecret := true
includeLow := false
includeMedium := false
includeHigh := false
includeCritical := false
includeSecret := false

// Process patterns from Codacy API
for _, pattern := range config {
Expand All @@ -32,11 +33,18 @@ func CreateTrivyConfig(config []domain.PatternConfiguration) string {
if pattern.PatternDefinition.Id == "Trivy_vulnerability_medium" {
includeMedium = patternEnabled
}
if pattern.PatternDefinition.Id == "Trivy_vulnerability" {
// This covers HIGH and CRITICAL
if pattern.PatternDefinition.Id == "Trivy_vulnerability_high" {
includeHigh = patternEnabled
}
if pattern.PatternDefinition.Id == "Trivy_vulnerability_critical" {
includeCritical = patternEnabled
}
if pattern.PatternDefinition.Id == "Trivy_vulnerability" {
// This covers HIGH and CRITICAL
// Now there are other patterns that turn these severities on
includeHigh = patternEnabled || includeHigh
includeCritical = patternEnabled || includeCritical
}
if pattern.PatternDefinition.Id == "Trivy_secret" {
includeSecret = patternEnabled
}
Expand Down
167 changes: 129 additions & 38 deletions tools/trivyConfigCreator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,10 @@ func TestCreateTrivyConfigEmptyConfig(t *testing.T) {
testTrivyConfig(t,
[]domain.PatternConfiguration{},
`severity:
- LOW
- MEDIUM
- HIGH
- CRITICAL

scan:
scanners:
- vuln
- secret
`)
}

Expand Down Expand Up @@ -53,6 +48,28 @@ func TestCreateTrivyConfigAllEnabled(t *testing.T) {
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_high",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "true",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_critical",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "true",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability",
Expand Down Expand Up @@ -94,12 +111,56 @@ func TestCreateTrivyConfigNoLow(t *testing.T) {
[]domain.PatternConfiguration{
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_minor",
Id: "Trivy_vulnerability_medium",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "true",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_high",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "true",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_critical",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "true",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "true",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_secret",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "true",
},
},
},
Expand All @@ -116,54 +177,56 @@ scan:
`)
}

func TestCreateTrivyConfigOnlyHigh(t *testing.T) {
func TestCreateTrivyConfigOnlyHighAndCritical(t *testing.T) {
testTrivyConfig(t,
[]domain.PatternConfiguration{
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_minor",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_medium",
Id: "Trivy_vulnerability",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "true",
},
},
},
},
`severity:
- HIGH
- CRITICAL

scan:
scanners:
- vuln
`)
}

func TestCreateTrivyConfigNoVulnerabilitiesWithSecret(t *testing.T) {
testTrivyConfig(t,
[]domain.PatternConfiguration{
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_secret",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "true",
},
},
},
},
`severity:
- HIGH
- CRITICAL

scan:
scanners:
- vuln
- secret
`)
}

func TestCreateTrivyConfigNoVulnerabilities(t *testing.T) {
func TestCreateTrivyConfigOnlyLowWithSecrets(t *testing.T) {
testTrivyConfig(t,
[]domain.PatternConfiguration{
{
Expand All @@ -173,48 +236,62 @@ func TestCreateTrivyConfigNoVulnerabilities(t *testing.T) {
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "true",
},
},
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_medium",
Id: "Trivy_secret",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "enabled",
},
},
},
},
`severity:
- LOW

scan:
scanners:
- vuln
- secret
`)
}

func TestCreateTrivyConfigOnlyHigh(t *testing.T) {
testTrivyConfig(t,
[]domain.PatternConfiguration{
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability",
Id: "Trivy_vulnerability_high",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "true",
},
},
},
},
`severity:
- HIGH

scan:
scanners:
- vuln
- secret
`)
}

func TestCreateTrivyConfigOnlySecretsLow(t *testing.T) {
func TestCreateTrivyConfigOnlyCriticalWithSecrets(t *testing.T) {
testTrivyConfig(t,
[]domain.PatternConfiguration{
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_minor",
Id: "Trivy_vulnerability_critical",
},
Parameters: []domain.ParameterConfiguration{
{
Expand All @@ -225,33 +302,47 @@ func TestCreateTrivyConfigOnlySecretsLow(t *testing.T) {
},
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability_medium",
Id: "Trivy_secret",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "true",
},
},
},
},
`severity:
- CRITICAL

scan:
scanners:
- vuln
- secret
`)
}

func TestCreateTrivyConfigOnlyHighAndCriticalEventIfPatternsOverlap(t *testing.T) {
testTrivyConfig(t,
[]domain.PatternConfiguration{
{
PatternDefinition: domain.PatternDefinition{
Id: "Trivy_vulnerability",
},
Parameters: []domain.ParameterConfiguration{
{
Name: "enabled",
Value: "false",
Value: "true",
},
},
},
},
`severity:
- LOW
- HIGH
- CRITICAL

scan:
scanners:
- vuln
- secret
`)
}
Loading