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