github.com/elek/golangci-lint@v1.42.2-0.20211208090441-c05b7fcb3a9a/pkg/result/processors/utils.go (about)

     1  package processors
     2  
     3  import (
     4  	"path/filepath"
     5  	"regexp"
     6  	"strings"
     7  
     8  	"github.com/pkg/errors"
     9  
    10  	"github.com/elek/golangci-lint/pkg/result"
    11  )
    12  
    13  func filterIssues(issues []result.Issue, filter func(i *result.Issue) bool) []result.Issue {
    14  	retIssues := make([]result.Issue, 0, len(issues))
    15  	for i := range issues {
    16  		if filter(&issues[i]) {
    17  			retIssues = append(retIssues, issues[i])
    18  		}
    19  	}
    20  
    21  	return retIssues
    22  }
    23  
    24  func filterIssuesErr(issues []result.Issue, filter func(i *result.Issue) (bool, error)) ([]result.Issue, error) {
    25  	retIssues := make([]result.Issue, 0, len(issues))
    26  	for i := range issues {
    27  		ok, err := filter(&issues[i])
    28  		if err != nil {
    29  			return nil, errors.Wrapf(err, "can't filter issue %#v", issues[i])
    30  		}
    31  
    32  		if ok {
    33  			retIssues = append(retIssues, issues[i])
    34  		}
    35  	}
    36  
    37  	return retIssues, nil
    38  }
    39  
    40  func transformIssues(issues []result.Issue, transform func(i *result.Issue) *result.Issue) []result.Issue {
    41  	retIssues := make([]result.Issue, 0, len(issues))
    42  	for i := range issues {
    43  		newI := transform(&issues[i])
    44  		if newI != nil {
    45  			retIssues = append(retIssues, *newI)
    46  		}
    47  	}
    48  
    49  	return retIssues
    50  }
    51  
    52  var separatorToReplace = regexp.QuoteMeta(string(filepath.Separator))
    53  
    54  func normalizePathInRegex(path string) string {
    55  	if filepath.Separator == '/' {
    56  		return path
    57  	}
    58  
    59  	// This replacing should be safe because "/" are disallowed in Windows
    60  	// https://docs.microsoft.com/ru-ru/windows/win32/fileio/naming-a-file
    61  	return strings.ReplaceAll(path, "/", separatorToReplace)
    62  }