diff --git a/.golangci.reference.yml b/.golangci.reference.yml index 46fd2df5adea..2f7a36701a76 100644 --- a/.golangci.reference.yml +++ b/.golangci.reference.yml @@ -2097,7 +2097,7 @@ issues: # it can be disabled by `exclude-use-default: false`. # To list all excluded by default patterns execute `golangci-lint run --help` # - # Default: [] + # Default: https://golangci-lint.run/usage/false-positives/#default-exclusions exclude: - abcdef @@ -2139,9 +2139,24 @@ issues: exclude-case-sensitive: false # The list of ids of default excludes to include or disable. + # https://golangci-lint.run/usage/false-positives/#default-exclusions # Default: [] include: - - EXC0002 # disable excluding of issues about comments from golint. + - EXC0001 + - EXC0002 + - EXC0003 + - EXC0004 + - EXC0005 + - EXC0006 + - EXC0007 + - EXC0008 + - EXC0009 + - EXC0010 + - EXC0011 + - EXC0012 + - EXC0013 + - EXC0014 + - EXC0015 # Maximum issues count per one linter. # Set to 0 to disable. diff --git a/docs/src/docs/contributing/workflow.mdx b/docs/src/docs/contributing/workflow.mdx index e565a4e5bb78..afe9623dcaae 100644 --- a/docs/src/docs/contributing/workflow.mdx +++ b/docs/src/docs/contributing/workflow.mdx @@ -14,7 +14,7 @@ conduct](https://github.com/golangci/golangci-lint/blob/master/CODE_OF_CONDUCT.m Prerequisites: - `make` -- [Go 1.13+](https://golang.org/doc/install) +- [Go](https://golang.org/doc/install) Fork and clone [golangci-lint](https://github.com/golangci/golangci-lint) repository. diff --git a/docs/src/docs/usage/false-positives.mdx b/docs/src/docs/usage/false-positives.mdx index ade523fca4a4..354aee9f67fa 100644 --- a/docs/src/docs/usage/false-positives.mdx +++ b/docs/src/docs/usage/false-positives.mdx @@ -142,3 +142,10 @@ func someLegacyFunction() *string { You can see more examples of using `//nolint` in [our tests](https://github.com/golangci/golangci-lint/tree/master/pkg/result/processors/testdata) for it. Use `//nolint` instead of `// nolint` because machine-readable comments should have no space by Go convention. + +## Default Exclusions + +Some exclusions are considered as common, to help golangci-lint users those common exclusions are used as default exclusions. + +If you don't want to use it you can set `issues.exclude-use-default` to `false`. +{.DefaultExclusions} diff --git a/pkg/config/issues.go b/pkg/config/issues.go index a56823eed8d7..b2437ec97471 100644 --- a/pkg/config/issues.go +++ b/pkg/config/issues.go @@ -188,15 +188,16 @@ func GetDefaultExcludePatternsStrings() []string { return ret } +// TODO(ldez): this behavior must be changed in v2, because this is confusing. func GetExcludePatterns(include []string) []ExcludePattern { - includeMap := make(map[string]bool, len(include)) + includeMap := make(map[string]struct{}, len(include)) for _, inc := range include { - includeMap[inc] = true + includeMap[inc] = struct{}{} } var ret []ExcludePattern for _, p := range DefaultExcludePatterns { - if !includeMap[p.ID] { + if _, ok := includeMap[p.ID]; !ok { ret = append(ret, p) } } diff --git a/scripts/expand_website_templates/main.go b/scripts/expand_website_templates/main.go index 554bffc1eae3..a9d39ddec441 100644 --- a/scripts/expand_website_templates/main.go +++ b/scripts/expand_website_templates/main.go @@ -212,6 +212,7 @@ func buildTemplateContext() (map[string]string, error) { "LintersCommandOutputDisabledOnly": string(lintersOutParts[1]), "EnabledByDefaultLinters": getLintersListMarkdown(true), "DisabledByDefaultLinters": getLintersListMarkdown(false), + "DefaultExclusions": getDefaultExclusions(), "ThanksList": getThanksList(), "RunHelpText": string(shortHelp), "ChangeLog": string(changeLog), @@ -219,6 +220,21 @@ func buildTemplateContext() (map[string]string, error) { }, nil } +func getDefaultExclusions() string { + bufferString := bytes.NewBufferString("") + + for _, pattern := range config.DefaultExcludePatterns { + _, _ = fmt.Fprintln(bufferString) + _, _ = fmt.Fprintf(bufferString, "### %s\n", pattern.ID) + _, _ = fmt.Fprintln(bufferString) + _, _ = fmt.Fprintf(bufferString, "- linter: `%s`\n", pattern.Linter) + _, _ = fmt.Fprintf(bufferString, "- pattern: `%s`\n", strings.ReplaceAll(pattern.Pattern, "`", "`")) + _, _ = fmt.Fprintf(bufferString, "- why: %s\n", pattern.Why) + } + + return bufferString.String() +} + func getLintersListMarkdown(enabled bool) string { var neededLcs []*linter.Config lcs := lintersdb.NewManager(nil, nil).GetAllSupportedLinterConfigs()