@@ -31,24 +31,6 @@ type Runner struct {
3131
3232func NewRunner (cfg * config.Config , log logutils.Log , goenv * goutil.Env , es * lintersdb.EnabledSet ,
3333 lineCache * fsutils.LineCache , dbManager * lintersdb.Manager , pkgs []* gopackages.Package ) (* Runner , error ) {
34- icfg := cfg .Issues
35- excludePatterns := icfg .ExcludePatterns
36- if icfg .UseDefaultExcludes {
37- excludePatterns = append (excludePatterns , config .GetExcludePatternsStrings (icfg .IncludeDefaultExcludes )... )
38- }
39-
40- var excludeTotalPattern string
41- if len (excludePatterns ) != 0 {
42- excludeTotalPattern = fmt .Sprintf ("(%s)" , strings .Join (excludePatterns , "|" ))
43- }
44-
45- var excludeProcessor processors.Processor
46- if cfg .Issues .ExcludeCaseSensitive {
47- excludeProcessor = processors .NewExcludeCaseSensitive (excludeTotalPattern )
48- } else {
49- excludeProcessor = processors .NewExclude (excludeTotalPattern )
50- }
51-
5234 skipFilesProcessor , err := processors .NewSkipFiles (cfg .Run .SkipFiles )
5335 if err != nil {
5436 return nil , err
@@ -63,22 +45,6 @@ func NewRunner(cfg *config.Config, log logutils.Log, goenv *goutil.Env, es *lint
6345 return nil , err
6446 }
6547
66- var excludeRules []processors.ExcludeRule
67- for _ , r := range icfg .ExcludeRules {
68- excludeRules = append (excludeRules , processors.ExcludeRule {
69- Text : r .Text ,
70- Source : r .Source ,
71- Path : r .Path ,
72- Linters : r .Linters ,
73- })
74- }
75- var excludeRulesProcessor processors.Processor
76- if cfg .Issues .ExcludeCaseSensitive {
77- excludeRulesProcessor = processors .NewExcludeRulesCaseSensitive (excludeRules , lineCache , log .Child ("exclude_rules" ))
78- } else {
79- excludeRulesProcessor = processors .NewExcludeRules (excludeRules , lineCache , log .Child ("exclude_rules" ))
80- }
81-
8248 enabledLinters , err := es .GetEnabledLintersMap ()
8349 if err != nil {
8450 return nil , errors .Wrap (err , "failed to get enabled linters" )
@@ -101,17 +67,18 @@ func NewRunner(cfg *config.Config, log logutils.Log, goenv *goutil.Env, es *lint
10167 // Must be before exclude because users see already marked output and configure excluding by it.
10268 processors .NewIdentifierMarker (),
10369
104- excludeProcessor ,
105- excludeRulesProcessor ,
70+ getExcludeProcessor ( & cfg . Issues ) ,
71+ getExcludeRulesProcessor ( & cfg . Issues , log , lineCache ) ,
10672 processors .NewNolint (log .Child ("nolint" ), dbManager , enabledLinters ),
10773
10874 processors .NewUniqByLine (cfg ),
109- processors .NewDiff (icfg . Diff , icfg . DiffFromRevision , icfg .DiffPatchFilePath ),
75+ processors .NewDiff (cfg . Issues . Diff , cfg . Issues . DiffFromRevision , cfg . Issues .DiffPatchFilePath ),
11076 processors .NewMaxPerFileFromLinter (cfg ),
111- processors .NewMaxSameIssues (icfg .MaxSameIssues , log .Child ("max_same_issues" ), cfg ),
112- processors .NewMaxFromLinter (icfg .MaxIssuesPerLinter , log .Child ("max_from_linter" ), cfg ),
77+ processors .NewMaxSameIssues (cfg . Issues .MaxSameIssues , log .Child ("max_same_issues" ), cfg ),
78+ processors .NewMaxFromLinter (cfg . Issues .MaxIssuesPerLinter , log .Child ("max_from_linter" ), cfg ),
11379 processors .NewSourceCode (lineCache , log .Child ("source_code" )),
11480 processors .NewPathShortener (),
81+ getSeverityRulesProcessor (& cfg .Severity , log , lineCache ),
11582 },
11683 Log : log ,
11784 }, nil
@@ -254,3 +221,89 @@ func (r *Runner) processIssues(issues []result.Issue, sw *timeutils.Stopwatch, s
254221
255222 return issues
256223}
224+
225+ func getExcludeProcessor (cfg * config.Issues ) processors.Processor {
226+ excludePatterns := cfg .ExcludePatterns
227+ if cfg .UseDefaultExcludes {
228+ excludePatterns = append (excludePatterns , config .GetExcludePatternsStrings (cfg .IncludeDefaultExcludes )... )
229+ }
230+
231+ var excludeTotalPattern string
232+ if len (excludePatterns ) != 0 {
233+ excludeTotalPattern = fmt .Sprintf ("(%s)" , strings .Join (excludePatterns , "|" ))
234+ }
235+
236+ var excludeProcessor processors.Processor
237+ if cfg .ExcludeCaseSensitive {
238+ excludeProcessor = processors .NewExcludeCaseSensitive (excludeTotalPattern )
239+ } else {
240+ excludeProcessor = processors .NewExclude (excludeTotalPattern )
241+ }
242+
243+ return excludeProcessor
244+ }
245+
246+ func getExcludeRulesProcessor (cfg * config.Issues , log logutils.Log , lineCache * fsutils.LineCache ) processors.Processor {
247+ var excludeRules []processors.ExcludeRule
248+ for _ , r := range cfg .ExcludeRules {
249+ excludeRules = append (excludeRules , processors.ExcludeRule {
250+ BaseRule : processors.BaseRule {
251+ Text : r .Text ,
252+ Source : r .Source ,
253+ Path : r .Path ,
254+ Linters : r .Linters ,
255+ },
256+ })
257+ }
258+
259+ var excludeRulesProcessor processors.Processor
260+ if cfg .ExcludeCaseSensitive {
261+ excludeRulesProcessor = processors .NewExcludeRulesCaseSensitive (
262+ excludeRules ,
263+ lineCache ,
264+ log .Child ("exclude_rules" ),
265+ )
266+ } else {
267+ excludeRulesProcessor = processors .NewExcludeRules (
268+ excludeRules ,
269+ lineCache ,
270+ log .Child ("exclude_rules" ),
271+ )
272+ }
273+
274+ return excludeRulesProcessor
275+ }
276+
277+ func getSeverityRulesProcessor (cfg * config.Severity , log logutils.Log , lineCache * fsutils.LineCache ) processors.Processor {
278+ var severityRules []processors.SeverityRule
279+ for _ , r := range cfg .Rules {
280+ severityRules = append (severityRules , processors.SeverityRule {
281+ Severity : r .Severity ,
282+ BaseRule : processors.BaseRule {
283+ Text : r .Text ,
284+ Source : r .Source ,
285+ Path : r .Path ,
286+ Linters : r .Linters ,
287+ },
288+ })
289+ }
290+
291+ var severityRulesProcessor processors.Processor
292+ if cfg .CaseSensitive {
293+ severityRulesProcessor = processors .NewSeverityRulesCaseSensitive (
294+ cfg .Default ,
295+ severityRules ,
296+ lineCache ,
297+ log .Child ("severity_rules" ),
298+ )
299+ } else {
300+ severityRulesProcessor = processors .NewSeverityRules (
301+ cfg .Default ,
302+ severityRules ,
303+ lineCache ,
304+ log .Child ("severity_rules" ),
305+ )
306+ }
307+
308+ return severityRulesProcessor
309+ }
0 commit comments