1package processors 2 3import ( 4 "fmt" 5 "regexp" 6 7 "github.com/golangci/golangci-lint/pkg/result" 8) 9 10type SkipFiles struct { 11 patterns []*regexp.Regexp 12} 13 14var _ Processor = SkipFiles{} 15 16func 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 32func (p SkipFiles) Name() string { 33 return "skip_files" 34} 35 36func (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 52func (p SkipFiles) Finish() {} 53