Skip to content

Commit ccacfe1

Browse files
ldezpull[bot]
authored andcommitted
dev: group skip-dir related elements (#4631)
1 parent 75f0e93 commit ccacfe1

File tree

6 files changed

+57
-69
lines changed

6 files changed

+57
-69
lines changed

pkg/commands/flagsets.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/golangci/golangci-lint/pkg/config"
1313
"github.com/golangci/golangci-lint/pkg/exitcodes"
1414
"github.com/golangci/golangci-lint/pkg/lint/lintersdb"
15-
"github.com/golangci/golangci-lint/pkg/packages"
15+
"github.com/golangci/golangci-lint/pkg/result/processors"
1616
)
1717

1818
func setupLintersFlagSet(v *viper.Viper, fs *pflag.FlagSet) {
@@ -129,7 +129,7 @@ func getDefaultIssueExcludeHelp() string {
129129

130130
func getDefaultDirectoryExcludeHelp() string {
131131
parts := []string{color.GreenString("Use or not use default excluded directories:")}
132-
for _, dir := range packages.StdExcludeDirRegexps {
132+
for _, dir := range processors.StdExcludeDirRegexps {
133133
parts = append(parts, fmt.Sprintf(" - %s", color.YellowString(dir)))
134134
}
135135
parts = append(parts, "")

pkg/lint/runner.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"github.com/golangci/golangci-lint/pkg/lint/linter"
1515
"github.com/golangci/golangci-lint/pkg/lint/lintersdb"
1616
"github.com/golangci/golangci-lint/pkg/logutils"
17-
"github.com/golangci/golangci-lint/pkg/packages"
1817
"github.com/golangci/golangci-lint/pkg/result"
1918
"github.com/golangci/golangci-lint/pkg/result/processors"
2019
"github.com/golangci/golangci-lint/pkg/timeutils"
@@ -48,10 +47,10 @@ func NewRunner(log logutils.Log, cfg *config.Config, args []string, goenv *gouti
4847

4948
skipDirs := cfg.Issues.ExcludeDirs
5049
if cfg.Issues.UseDefaultExcludeDirs {
51-
skipDirs = append(skipDirs, packages.StdExcludeDirRegexps...)
50+
skipDirs = append(skipDirs, processors.StdExcludeDirRegexps...)
5251
}
5352

54-
skipDirsProcessor, err := processors.NewSkipDirs(skipDirs, log.Child(logutils.DebugKeySkipDirs), args, cfg.Output.PathPrefix)
53+
skipDirsProcessor, err := processors.NewSkipDirs(log.Child(logutils.DebugKeySkipDirs), skipDirs, args, cfg.Output.PathPrefix)
5554
if err != nil {
5655
return nil, err
5756
}

pkg/packages/exclude.go

Lines changed: 0 additions & 25 deletions
This file was deleted.

pkg/packages/exclude_test.go

Lines changed: 0 additions & 38 deletions
This file was deleted.

pkg/result/processors/skip_dirs.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ import (
1212

1313
var _ Processor = (*SkipDirs)(nil)
1414

15+
var StdExcludeDirRegexps = []string{
16+
normalizePathRegex("vendor"),
17+
normalizePathRegex("third_party"),
18+
normalizePathRegex("testdata"),
19+
normalizePathRegex("examples"),
20+
normalizePathRegex("Godeps"),
21+
normalizePathRegex("builtin"),
22+
}
23+
1524
type skipStat struct {
1625
pattern string
1726
count int
@@ -26,7 +35,7 @@ type SkipDirs struct {
2635
pathPrefix string
2736
}
2837

29-
func NewSkipDirs(patterns []string, log logutils.Log, args []string, pathPrefix string) (*SkipDirs, error) {
38+
func NewSkipDirs(log logutils.Log, patterns, args []string, pathPrefix string) (*SkipDirs, error) {
3039
var patternsRe []*regexp.Regexp
3140
for _, p := range patterns {
3241
p = fsutils.NormalizePathInRegex(p)
@@ -152,3 +161,12 @@ func absDirs(args []string) ([]string, error) {
152161

153162
return absArgsDirs, nil
154163
}
164+
165+
func normalizePathRegex(e string) string {
166+
return createPathRegex(e, filepath.Separator)
167+
}
168+
169+
func createPathRegex(e string, sep rune) string {
170+
escapedSep := regexp.QuoteMeta(string(sep)) // needed for windows sep '\\'
171+
return fmt.Sprintf(`(^|%[1]s)%[2]s($|%[1]s)`, escapedSep, e)
172+
}

pkg/result/processors/skip_dirs_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package processors
22

33
import (
44
"path/filepath"
5+
"regexp"
6+
"strings"
57
"testing"
68

79
"github.com/stretchr/testify/assert"
@@ -58,6 +60,38 @@ func Test_absDirs(t *testing.T) {
5860
}
5961
}
6062

63+
func Test_createPathRegex(t *testing.T) {
64+
matches := [][]string{
65+
{"dir"},
66+
{"root", "dir"},
67+
{"root", "dir", "subdir"},
68+
{"dir", "subdir"},
69+
}
70+
71+
noMatches := [][]string{
72+
{"nodir"},
73+
{"dirno"},
74+
{"root", "dirno"},
75+
{"root", "nodir"},
76+
{"root", "dirno", "subdir"},
77+
{"root", "nodir", "subdir"},
78+
{"dirno", "subdir"},
79+
{"nodir", "subdir"},
80+
}
81+
82+
for _, sep := range []rune{'/', '\\'} {
83+
exp := regexp.MustCompile(createPathRegex("dir", sep))
84+
85+
for _, m := range matches {
86+
assert.Regexp(t, exp, strings.Join(m, string(sep)))
87+
}
88+
89+
for _, m := range noMatches {
90+
assert.NotRegexp(t, exp, strings.Join(m, string(sep)))
91+
}
92+
}
93+
}
94+
6195
func mustAbs(t *testing.T, p string) string {
6296
t.Helper()
6397

0 commit comments

Comments
 (0)