Skip to content

Commit 3d91352

Browse files
authored
feat: option to not override severity from linters (#4452)
1 parent f81c3f2 commit 3d91352

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

.golangci.reference.yml

+4
Original file line numberDiff line numberDiff line change
@@ -2856,6 +2856,10 @@ severity:
28562856
# Default: false
28572857
case-sensitive: true
28582858

2859+
# Don't override severity defined by linters.
2860+
# Default: false
2861+
keep-linter-severity: true
2862+
28592863
# When a list of severity rules are provided, severity information will be added to lint issues.
28602864
# Severity rules have the same filtering capability as exclude rules
28612865
# except you are allowed to specify one matcher per severity rule.

pkg/config/severity.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ import (
88
const severityRuleMinConditionsCount = 1
99

1010
type Severity struct {
11-
Default string `mapstructure:"default-severity"`
12-
CaseSensitive bool `mapstructure:"case-sensitive"`
13-
Rules []SeverityRule `mapstructure:"rules"`
11+
Default string `mapstructure:"default-severity"`
12+
CaseSensitive bool `mapstructure:"case-sensitive"`
13+
Rules []SeverityRule `mapstructure:"rules"`
14+
KeepLinterSeverity bool `mapstructure:"keep-linter-severity"` // TODO(ldez): in v2 should be changed to `Override`.
1415
}
1516

1617
func (s *Severity) Validate() error {

pkg/lint/runner.go

+1
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ func getSeverityRulesProcessor(cfg *config.Severity, log logutils.Log, files *fs
332332
Default: cfg.Default,
333333
Rules: severityRules,
334334
CaseSensitive: cfg.CaseSensitive,
335+
Override: !cfg.KeepLinterSeverity,
335336
}
336337

337338
return processors.NewSeverity(log.Child(logutils.DebugKeySeverityRules), files, severityOpts)

pkg/result/processors/severity.go

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ type SeverityOptions struct {
2424
Default string
2525
Rules []SeverityRule
2626
CaseSensitive bool
27+
Override bool
2728
}
2829

2930
type Severity struct {
@@ -35,6 +36,7 @@ type Severity struct {
3536

3637
defaultSeverity string
3738
rules []severityRule
39+
override bool
3840
}
3941

4042
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) *
4345
files: files,
4446
log: log,
4547
defaultSeverity: opts.Default,
48+
override: opts.Override,
4649
}
4750

4851
prefix := "(?i)"
@@ -62,6 +65,10 @@ func (p *Severity) Process(issues []result.Issue) ([]result.Issue, error) {
6265
}
6366

6467
return transformIssues(issues, func(i *result.Issue) *result.Issue {
68+
if i.Severity != "" && !p.override {
69+
return i
70+
}
71+
6572
for _, rule := range p.rules {
6673
rule := rule
6774

0 commit comments

Comments
 (0)