From 3d9135248ba0ac28fae50bdfc06f4593e03fb940 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Mon, 4 Mar 2024 20:11:09 +0100 Subject: [PATCH] feat: option to not override severity from linters (#4452) --- .golangci.reference.yml | 4 ++++ pkg/config/severity.go | 7 ++++--- pkg/lint/runner.go | 1 + pkg/result/processors/severity.go | 7 +++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.golangci.reference.yml b/.golangci.reference.yml index 400faa6a4cea..2144cdf9ba94 100644 --- a/.golangci.reference.yml +++ b/.golangci.reference.yml @@ -2856,6 +2856,10 @@ severity: # Default: false case-sensitive: true + # Don't override severity defined by linters. + # Default: false + keep-linter-severity: true + # When a list of severity rules are provided, severity information will be added to lint issues. # Severity rules have the same filtering capability as exclude rules # except you are allowed to specify one matcher per severity rule. diff --git a/pkg/config/severity.go b/pkg/config/severity.go index 91a6503d1d52..c707959ca403 100644 --- a/pkg/config/severity.go +++ b/pkg/config/severity.go @@ -8,9 +8,10 @@ import ( const severityRuleMinConditionsCount = 1 type Severity struct { - Default string `mapstructure:"default-severity"` - CaseSensitive bool `mapstructure:"case-sensitive"` - Rules []SeverityRule `mapstructure:"rules"` + Default string `mapstructure:"default-severity"` + CaseSensitive bool `mapstructure:"case-sensitive"` + Rules []SeverityRule `mapstructure:"rules"` + KeepLinterSeverity bool `mapstructure:"keep-linter-severity"` // TODO(ldez): in v2 should be changed to `Override`. } func (s *Severity) Validate() error { diff --git a/pkg/lint/runner.go b/pkg/lint/runner.go index d1a096db4514..150e6c7f3078 100644 --- a/pkg/lint/runner.go +++ b/pkg/lint/runner.go @@ -332,6 +332,7 @@ func getSeverityRulesProcessor(cfg *config.Severity, log logutils.Log, files *fs Default: cfg.Default, Rules: severityRules, CaseSensitive: cfg.CaseSensitive, + Override: !cfg.KeepLinterSeverity, } return processors.NewSeverity(log.Child(logutils.DebugKeySeverityRules), files, severityOpts) diff --git a/pkg/result/processors/severity.go b/pkg/result/processors/severity.go index b24fd58422d8..fdbbe322aba1 100644 --- a/pkg/result/processors/severity.go +++ b/pkg/result/processors/severity.go @@ -24,6 +24,7 @@ type SeverityOptions struct { Default string Rules []SeverityRule CaseSensitive bool + Override bool } type Severity struct { @@ -35,6 +36,7 @@ type Severity struct { defaultSeverity string rules []severityRule + override bool } func NewSeverity(log logutils.Log, files *fsutils.Files, opts SeverityOptions) *Severity { @@ -43,6 +45,7 @@ func NewSeverity(log logutils.Log, files *fsutils.Files, opts SeverityOptions) * files: files, log: log, defaultSeverity: opts.Default, + override: opts.Override, } prefix := "(?i)" @@ -62,6 +65,10 @@ func (p *Severity) Process(issues []result.Issue) ([]result.Issue, error) { } return transformIssues(issues, func(i *result.Issue) *result.Issue { + if i.Severity != "" && !p.override { + return i + } + for _, rule := range p.rules { rule := rule