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 }