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() {}