@@ -29,7 +29,12 @@ type Runner struct {
2929
3030func NewRunner (cfg * config.Config , log logutils.Log , goenv * goutil.Env , es * lintersdb.EnabledSet ,
3131 lineCache * fsutils.LineCache , dbManager * lintersdb.Manager , pkgs []* gopackages.Package ) (* Runner , error ) {
32- skipFilesProcessor , err := processors .NewSkipFiles (cfg .Run .SkipFiles )
32+ // Beware that some processors need to add the path prefix when working with paths
33+ // because they get invoked before the path prefixer (exclude and severity rules)
34+ // or process other paths (skip files).
35+ files := fsutils .NewFiles (lineCache , cfg .Output .PathPrefix )
36+
37+ skipFilesProcessor , err := processors .NewSkipFiles (cfg .Run .SkipFiles , cfg .Output .PathPrefix )
3338 if err != nil {
3439 return nil , err
3540 }
@@ -38,7 +43,7 @@ func NewRunner(cfg *config.Config, log logutils.Log, goenv *goutil.Env, es *lint
3843 if cfg .Run .UseDefaultSkipDirs {
3944 skipDirs = append (skipDirs , packages .StdExcludeDirRegexps ... )
4045 }
41- skipDirsProcessor , err := processors .NewSkipDirs (skipDirs , log .Child (logutils .DebugKeySkipDirs ), cfg .Run .Args )
46+ skipDirsProcessor , err := processors .NewSkipDirs (skipDirs , log .Child (logutils .DebugKeySkipDirs ), cfg .Run .Args , cfg . Output . PathPrefix )
4247 if err != nil {
4348 return nil , err
4449 }
@@ -82,7 +87,7 @@ func NewRunner(cfg *config.Config, log logutils.Log, goenv *goutil.Env, es *lint
8287 processors .NewIdentifierMarker (),
8388
8489 getExcludeProcessor (& cfg .Issues ),
85- getExcludeRulesProcessor (& cfg .Issues , log , lineCache ),
90+ getExcludeRulesProcessor (& cfg .Issues , log , files ),
8691 processors .NewNolint (log .Child (logutils .DebugKeyNolint ), dbManager , enabledLinters ),
8792
8893 processors .NewUniqByLine (cfg ),
@@ -92,7 +97,7 @@ func NewRunner(cfg *config.Config, log logutils.Log, goenv *goutil.Env, es *lint
9297 processors .NewMaxFromLinter (cfg .Issues .MaxIssuesPerLinter , log .Child (logutils .DebugKeyMaxFromLinter ), cfg ),
9398 processors .NewSourceCode (lineCache , log .Child (logutils .DebugKeySourceCode )),
9499 processors .NewPathShortener (),
95- getSeverityRulesProcessor (& cfg .Severity , log , lineCache ),
100+ getSeverityRulesProcessor (& cfg .Severity , log , files ),
96101 processors .NewPathPrefixer (cfg .Output .PathPrefix ),
97102 processors .NewSortResults (cfg ),
98103 },
@@ -259,7 +264,7 @@ func getExcludeProcessor(cfg *config.Issues) processors.Processor {
259264 return excludeProcessor
260265}
261266
262- func getExcludeRulesProcessor (cfg * config.Issues , log logutils.Log , lineCache * fsutils.LineCache ) processors.Processor {
267+ func getExcludeRulesProcessor (cfg * config.Issues , log logutils.Log , files * fsutils.Files ) processors.Processor {
263268 var excludeRules []processors.ExcludeRule
264269 for _ , r := range cfg .ExcludeRules {
265270 excludeRules = append (excludeRules , processors.ExcludeRule {
@@ -287,21 +292,21 @@ func getExcludeRulesProcessor(cfg *config.Issues, log logutils.Log, lineCache *f
287292 if cfg .ExcludeCaseSensitive {
288293 excludeRulesProcessor = processors .NewExcludeRulesCaseSensitive (
289294 excludeRules ,
290- lineCache ,
295+ files ,
291296 log .Child (logutils .DebugKeyExcludeRules ),
292297 )
293298 } else {
294299 excludeRulesProcessor = processors .NewExcludeRules (
295300 excludeRules ,
296- lineCache ,
301+ files ,
297302 log .Child (logutils .DebugKeyExcludeRules ),
298303 )
299304 }
300305
301306 return excludeRulesProcessor
302307}
303308
304- func getSeverityRulesProcessor (cfg * config.Severity , log logutils.Log , lineCache * fsutils.LineCache ) processors.Processor {
309+ func getSeverityRulesProcessor (cfg * config.Severity , log logutils.Log , files * fsutils.Files ) processors.Processor {
305310 var severityRules []processors.SeverityRule
306311 for _ , r := range cfg .Rules {
307312 severityRules = append (severityRules , processors.SeverityRule {
@@ -320,14 +325,14 @@ func getSeverityRulesProcessor(cfg *config.Severity, log logutils.Log, lineCache
320325 severityRulesProcessor = processors .NewSeverityRulesCaseSensitive (
321326 cfg .Default ,
322327 severityRules ,
323- lineCache ,
328+ files ,
324329 log .Child (logutils .DebugKeySeverityRules ),
325330 )
326331 } else {
327332 severityRulesProcessor = processors .NewSeverityRules (
328333 cfg .Default ,
329334 severityRules ,
330- lineCache ,
335+ files ,
331336 log .Child (logutils .DebugKeySeverityRules ),
332337 )
333338 }
0 commit comments