From f312a0fc4e31a3aafa73dc513c7fc45c91728439 Mon Sep 17 00:00:00 2001 From: Sean DuBois Date: Tue, 10 Sep 2019 01:14:25 -0700 Subject: [PATCH] fix #416: Add skip-dirs-use-default (#630) --- pkg/commands/run.go | 17 +++++++++++++++-- pkg/config/config.go | 5 +++-- pkg/lint/runner.go | 6 ++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/pkg/commands/run.go b/pkg/commands/run.go index f5e0a666553b..26ac12ba4dfb 100644 --- a/pkg/commands/run.go +++ b/pkg/commands/run.go @@ -10,6 +10,7 @@ import ( "strings" "time" + "github.com/golangci/golangci-lint/pkg/packages" "github.com/golangci/golangci-lint/pkg/result/processors" "github.com/fatih/color" @@ -26,7 +27,7 @@ import ( "github.com/golangci/golangci-lint/pkg/result" ) -func getDefaultExcludeHelp() string { +func getDefaultIssueExcludeHelp() string { parts := []string{"Use or not use default excludes:"} for _, ep := range config.DefaultExcludePatterns { parts = append(parts, @@ -38,6 +39,17 @@ func getDefaultExcludeHelp() string { return strings.Join(parts, "\n") } +func getDefaultDirectoryExcludeHelp() string { + parts := []string{"Use or not use default excluded directories:"} + for _, dir := range packages.StdExcludeDirRegexps { + parts = append(parts, + fmt.Sprintf(" - %s", color.YellowString(dir)), + "", + ) + } + return strings.Join(parts, "\n") +} + const welcomeMessage = "Run this tool in cloud on every github pull " + "request in https://golangci.com for free (public repos)" @@ -83,6 +95,7 @@ func initFlagSet(fs *pflag.FlagSet, cfg *config.Config, m *lintersdb.Manager, is fs.StringVarP(&rc.Config, "config", "c", "", wh("Read config from file path `PATH`")) fs.BoolVar(&rc.NoConfig, "no-config", false, wh("Don't read config")) fs.StringSliceVar(&rc.SkipDirs, "skip-dirs", nil, wh("Regexps of directories to skip")) + fs.BoolVar(&rc.UseDefaultSkipDirs, "skip-dirs-use-default", true, getDefaultDirectoryExcludeHelp()) fs.StringSliceVar(&rc.SkipFiles, "skip-files", nil, wh("Regexps of files to skip")) // Linters settings config @@ -162,7 +175,7 @@ func initFlagSet(fs *pflag.FlagSet, cfg *config.Config, m *lintersdb.Manager, is // Issues config ic := &cfg.Issues fs.StringSliceVarP(&ic.ExcludePatterns, "exclude", "e", nil, wh("Exclude issue by regexp")) - fs.BoolVar(&ic.UseDefaultExcludes, "exclude-use-default", true, getDefaultExcludeHelp()) + fs.BoolVar(&ic.UseDefaultExcludes, "exclude-use-default", true, getDefaultIssueExcludeHelp()) fs.IntVar(&ic.MaxIssuesPerLinter, "max-issues-per-linter", 50, wh("Maximum issues count per one linter. Set to 0 to disable")) diff --git a/pkg/config/config.go b/pkg/config/config.go index 76f96e37f2af..775e14b21b26 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -118,8 +118,9 @@ type Run struct { Deadline time.Duration PrintVersion bool - SkipFiles []string `mapstructure:"skip-files"` - SkipDirs []string `mapstructure:"skip-dirs"` + SkipFiles []string `mapstructure:"skip-files"` + SkipDirs []string `mapstructure:"skip-dirs"` + UseDefaultSkipDirs bool `mapstructure:"skip-dirs-use-default"` } type LintersSettings struct { diff --git a/pkg/lint/runner.go b/pkg/lint/runner.go index fd700a496bb3..1de78e717b21 100644 --- a/pkg/lint/runner.go +++ b/pkg/lint/runner.go @@ -48,8 +48,10 @@ func NewRunner(astCache *astcache.Cache, cfg *config.Config, log logutils.Log, g return nil, err } - skipDirs := append([]string{}, packages.StdExcludeDirRegexps...) - skipDirs = append(skipDirs, cfg.Run.SkipDirs...) + skipDirs := cfg.Run.SkipDirs + if cfg.Run.UseDefaultSkipDirs { + skipDirs = append(skipDirs, packages.StdExcludeDirRegexps...) + } skipDirsProcessor, err := processors.NewSkipDirs(skipDirs, log.Child("skip dirs"), cfg.Run.Args) if err != nil { return nil, err