8
8
"github.com/golangci/golangci-lint/pkg/result"
9
9
)
10
10
11
+ var _ Processor = & Severity {}
12
+
11
13
type severityRule struct {
12
14
baseRule
13
15
severity string
@@ -18,53 +20,47 @@ type SeverityRule struct {
18
20
Severity string
19
21
}
20
22
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
+
22
36
defaultSeverity string
23
37
rules []severityRule
24
- files * fsutils.Files
25
- log logutils.Log
26
38
}
27
39
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" ,
30
43
files : files ,
31
44
log : log ,
32
- defaultSeverity : defaultSeverity ,
45
+ defaultSeverity : opts . Default ,
33
46
}
34
- r .rules = createSeverityRules (rules , "(?i)" )
35
-
36
- return r
37
- }
38
47
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"
60
52
}
61
- return parsedRules
53
+
54
+ p .rules = createSeverityRules (opts .Rules , prefix )
55
+
56
+ return p
62
57
}
63
58
64
- func (p SeverityRules ) Process (issues []result.Issue ) ([]result.Issue , error ) {
59
+ func (p * Severity ) Process (issues []result.Issue ) ([]result.Issue , error ) {
65
60
if len (p .rules ) == 0 && p .defaultSeverity == "" {
66
61
return issues , nil
67
62
}
63
+
68
64
return transformIssues (issues , func (i * result.Issue ) * result.Issue {
69
65
for _ , rule := range p .rules {
70
66
rule := rule
@@ -79,30 +75,45 @@ func (p SeverityRules) Process(issues []result.Issue) ([]result.Issue, error) {
79
75
return i
80
76
}
81
77
}
78
+
82
79
i .Severity = p .defaultSeverity
80
+
83
81
return i
84
82
}), nil
85
83
}
86
84
87
- func (SeverityRules ) Name () string { return "severity-rules" }
88
- func (SeverityRules ) Finish () {}
85
+ func (p * Severity ) Name () string { return p .name }
89
86
90
- var _ Processor = SeverityRules {}
87
+ func ( * Severity ) Finish () {}
91
88
92
- type SeverityRulesCaseSensitive struct {
93
- * SeverityRules
94
- }
89
+ func createSeverityRules (rules []SeverityRule , prefix string ) []severityRule {
90
+ parsedRules := make ([]severityRule , 0 , len (rules ))
95
91
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 )
102
116
}
103
- r .rules = createSeverityRules (rules , "" )
104
117
105
- return & SeverityRulesCaseSensitive { r }
118
+ return parsedRules
106
119
}
107
-
108
- func (SeverityRulesCaseSensitive ) Name () string { return "severity-rules-case-sensitive" }
0 commit comments