Skip to content

Commit f81c3f2

Browse files
authored
dev: simplify severity processor (#4451)
1 parent 8f2459b commit f81c3f2

File tree

3 files changed

+194
-141
lines changed

3 files changed

+194
-141
lines changed

pkg/lint/runner.go

+5-16
Original file line numberDiff line numberDiff line change
@@ -328,22 +328,11 @@ func getSeverityRulesProcessor(cfg *config.Severity, log logutils.Log, files *fs
328328
})
329329
}
330330

331-
var severityRulesProcessor processors.Processor
332-
if cfg.CaseSensitive {
333-
severityRulesProcessor = processors.NewSeverityRulesCaseSensitive(
334-
cfg.Default,
335-
severityRules,
336-
files,
337-
log.Child(logutils.DebugKeySeverityRules),
338-
)
339-
} else {
340-
severityRulesProcessor = processors.NewSeverityRules(
341-
cfg.Default,
342-
severityRules,
343-
files,
344-
log.Child(logutils.DebugKeySeverityRules),
345-
)
331+
severityOpts := processors.SeverityOptions{
332+
Default: cfg.Default,
333+
Rules: severityRules,
334+
CaseSensitive: cfg.CaseSensitive,
346335
}
347336

348-
return severityRulesProcessor
337+
return processors.NewSeverity(log.Child(logutils.DebugKeySeverityRules), files, severityOpts)
349338
}

pkg/result/processors/severity_rules.go renamed to pkg/result/processors/severity.go

+60-49
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"github.com/golangci/golangci-lint/pkg/result"
99
)
1010

11+
var _ Processor = &Severity{}
12+
1113
type severityRule struct {
1214
baseRule
1315
severity string
@@ -18,53 +20,47 @@ type SeverityRule struct {
1820
Severity string
1921
}
2022

21-
type SeverityRules struct {
23+
type SeverityOptions struct {
24+
Default string
25+
Rules []SeverityRule
26+
CaseSensitive bool
27+
}
28+
29+
type Severity struct {
30+
name string
31+
32+
log logutils.Log
33+
34+
files *fsutils.Files
35+
2236
defaultSeverity string
2337
rules []severityRule
24-
files *fsutils.Files
25-
log logutils.Log
2638
}
2739

28-
func NewSeverityRules(defaultSeverity string, rules []SeverityRule, files *fsutils.Files, log logutils.Log) *SeverityRules {
29-
r := &SeverityRules{
40+
func NewSeverity(log logutils.Log, files *fsutils.Files, opts SeverityOptions) *Severity {
41+
p := &Severity{
42+
name: "severity-rules",
3043
files: files,
3144
log: log,
32-
defaultSeverity: defaultSeverity,
45+
defaultSeverity: opts.Default,
3346
}
34-
r.rules = createSeverityRules(rules, "(?i)")
35-
36-
return r
37-
}
3847

39-
func createSeverityRules(rules []SeverityRule, prefix string) []severityRule {
40-
parsedRules := make([]severityRule, 0, len(rules))
41-
for _, rule := range rules {
42-
parsedRule := severityRule{}
43-
parsedRule.linters = rule.Linters
44-
parsedRule.severity = rule.Severity
45-
if rule.Text != "" {
46-
parsedRule.text = regexp.MustCompile(prefix + rule.Text)
47-
}
48-
if rule.Source != "" {
49-
parsedRule.source = regexp.MustCompile(prefix + rule.Source)
50-
}
51-
if rule.Path != "" {
52-
path := fsutils.NormalizePathInRegex(rule.Path)
53-
parsedRule.path = regexp.MustCompile(path)
54-
}
55-
if rule.PathExcept != "" {
56-
pathExcept := fsutils.NormalizePathInRegex(rule.PathExcept)
57-
parsedRule.pathExcept = regexp.MustCompile(pathExcept)
58-
}
59-
parsedRules = append(parsedRules, parsedRule)
48+
prefix := "(?i)"
49+
if opts.CaseSensitive {
50+
prefix = ""
51+
p.name = "severity-rules-case-sensitive"
6052
}
61-
return parsedRules
53+
54+
p.rules = createSeverityRules(opts.Rules, prefix)
55+
56+
return p
6257
}
6358

64-
func (p SeverityRules) Process(issues []result.Issue) ([]result.Issue, error) {
59+
func (p *Severity) Process(issues []result.Issue) ([]result.Issue, error) {
6560
if len(p.rules) == 0 && p.defaultSeverity == "" {
6661
return issues, nil
6762
}
63+
6864
return transformIssues(issues, func(i *result.Issue) *result.Issue {
6965
for _, rule := range p.rules {
7066
rule := rule
@@ -79,30 +75,45 @@ func (p SeverityRules) Process(issues []result.Issue) ([]result.Issue, error) {
7975
return i
8076
}
8177
}
78+
8279
i.Severity = p.defaultSeverity
80+
8381
return i
8482
}), nil
8583
}
8684

87-
func (SeverityRules) Name() string { return "severity-rules" }
88-
func (SeverityRules) Finish() {}
85+
func (p *Severity) Name() string { return p.name }
8986

90-
var _ Processor = SeverityRules{}
87+
func (*Severity) Finish() {}
9188

92-
type SeverityRulesCaseSensitive struct {
93-
*SeverityRules
94-
}
89+
func createSeverityRules(rules []SeverityRule, prefix string) []severityRule {
90+
parsedRules := make([]severityRule, 0, len(rules))
9591

96-
func NewSeverityRulesCaseSensitive(defaultSeverity string, rules []SeverityRule,
97-
files *fsutils.Files, log logutils.Log) *SeverityRulesCaseSensitive {
98-
r := &SeverityRules{
99-
files: files,
100-
log: log,
101-
defaultSeverity: defaultSeverity,
92+
for _, rule := range rules {
93+
parsedRule := severityRule{}
94+
parsedRule.linters = rule.Linters
95+
parsedRule.severity = rule.Severity
96+
97+
if rule.Text != "" {
98+
parsedRule.text = regexp.MustCompile(prefix + rule.Text)
99+
}
100+
101+
if rule.Source != "" {
102+
parsedRule.source = regexp.MustCompile(prefix + rule.Source)
103+
}
104+
105+
if rule.Path != "" {
106+
path := fsutils.NormalizePathInRegex(rule.Path)
107+
parsedRule.path = regexp.MustCompile(path)
108+
}
109+
110+
if rule.PathExcept != "" {
111+
pathExcept := fsutils.NormalizePathInRegex(rule.PathExcept)
112+
parsedRule.pathExcept = regexp.MustCompile(pathExcept)
113+
}
114+
115+
parsedRules = append(parsedRules, parsedRule)
102116
}
103-
r.rules = createSeverityRules(rules, "")
104117

105-
return &SeverityRulesCaseSensitive{r}
118+
return parsedRules
106119
}
107-
108-
func (SeverityRulesCaseSensitive) Name() string { return "severity-rules-case-sensitive" }

0 commit comments

Comments
 (0)