feat: option to not override severity from linters (#4452)

This commit is contained in:
Ludovic Fernandez 2024-03-04 20:11:09 +01:00 committed by GitHub
parent f81c3f26c1
commit 3d9135248b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 16 additions and 3 deletions

View File

@ -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.

View File

@ -11,6 +11,7 @@ type Severity struct {
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 {

View File

@ -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)

View File

@ -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