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