github.com/alecthomas/golangci-lint@v1.4.2-0.20180609094924-581a3564ff68/pkg/result/processors/skip_files.go (about) 1 package processors 2 3 import ( 4 "fmt" 5 "path/filepath" 6 "regexp" 7 8 "github.com/golangci/golangci-lint/pkg/result" 9 ) 10 11 type SkipFiles struct { 12 patterns []*regexp.Regexp 13 } 14 15 var _ Processor = SkipFiles{} 16 17 func NewSkipFiles(patterns []string) (*SkipFiles, error) { 18 var patternsRe []*regexp.Regexp 19 for _, p := range patterns { 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 fileName := filepath.Base(i.FilePath()) 43 for _, p := range p.patterns { 44 if p.MatchString(fileName) { 45 return false 46 } 47 } 48 49 return true 50 }), nil 51 } 52 53 func (p SkipFiles) Finish() {}