88 "github.com/golangci/golangci-lint/pkg/result"
99)
1010
11+ var _ Processor = & Severity {}
12+
1113type 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