github.com/elek/golangci-lint@v1.42.2-0.20211208090441-c05b7fcb3a9a/pkg/result/processors/skip_files.go (about) 1 package processors 2 3 import ( 4 "fmt" 5 "regexp" 6 7 "github.com/elek/golangci-lint/pkg/result" 8 ) 9 10 type SkipFiles struct { 11 patterns []*regexp.Regexp 12 } 13 14 var _ Processor = (*SkipFiles)(nil) 15 16 func NewSkipFiles(patterns []string) (*SkipFiles, error) { 17 var patternsRe []*regexp.Regexp 18 for _, p := range patterns { 19 p = normalizePathInRegex(p) 20 patternRe, err := regexp.Compile(p) 21 if err != nil { 22 return nil, fmt.Errorf("can't compile regexp %q: %s", p, err) 23 } 24 patternsRe = append(patternsRe, patternRe) 25 } 26 27 return &SkipFiles{ 28 patterns: patternsRe, 29 }, nil 30 } 31 32 func (p SkipFiles) Name() string { 33 return "skip_files" 34 } 35 36 func (p SkipFiles) Process(issues []result.Issue) ([]result.Issue, error) { 37 if len(p.patterns) == 0 { 38 return issues, nil 39 } 40 41 return filterIssues(issues, func(i *result.Issue) bool { 42 for _, p := range p.patterns { 43 if p.MatchString(i.FilePath()) { 44 return false 45 } 46 } 47 48 return true 49 }), nil 50 } 51 52 func (p SkipFiles) Finish() {}