From 71cf4417fcb7c2e5a3f296921eaeff4fc152e862 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Thu, 20 Jan 2022 09:24:52 +0100 Subject: [PATCH] docs: improve configuration file content (#2501) --- .golangci.example.yml | 1098 ++++++++++++++++++++++++++++------------- 1 file changed, 758 insertions(+), 340 deletions(-) diff --git a/.golangci.example.yml b/.golangci.example.yml index 3330ef188fcc..e93adb5ee5a4 100644 --- a/.golangci.example.yml +++ b/.golangci.example.yml @@ -1,49 +1,54 @@ # This file contains all available configuration options -# with their default values. +# with their default values (in comments). -# options for analysis running +# Options for analysis running. run: - # default concurrency is a available CPU number + # The default concurrency value is the number of available CPU. concurrency: 4 - # timeout for analysis, e.g. 30s, 5m, default is 1m - timeout: 1m + # Timeout for analysis, e.g. 30s, 5m. + # Default: 1m + timeout: 5m - # exit code when at least one issue was found, default is 1 - issues-exit-code: 1 + # Exit code when at least one issue was found. + # Default: 1 + issues-exit-code: 2 - # include test files or not, default is true - tests: true + # Include test files or not. + # Default: true + tests: false - # list of build tags, all linters use it. Default is empty list. + # List of build tags, all linters use it. + # Default: []. build-tags: - mytag - # which dirs to skip: issues from them won't be reported; - # can use regexp here: generated.*, regexp is applied on full path; - # default value is empty list, but default dirs are skipped independently - # from this option's value (see skip-dirs-use-default). - # "/" will be replaced by current OS file path separator to properly work - # on Windows. + # Which dirs to skip: issues from them won't be reported. + # Can use regexp here: `generated.*`, regexp is applied on full path. + # Default value is empty list, + # but default dirs are skipped independently of this option's value (see skip-dirs-use-default). + # "/" will be replaced by current OS file path separator to properly work on Windows. skip-dirs: - src/external_libs - autogenerated_by_my_lib - # default is true. Enables skipping of directories: - # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ - skip-dirs-use-default: true - - # which files to skip: they will be analyzed, but issues from them - # won't be reported. Default value is empty list, but there is - # no need to include all autogenerated files, we confidently recognize - # autogenerated files. If it's not please let us know. - # "/" will be replaced by current OS file path separator to properly work - # on Windows. + # Enables skipping of directories: + # - vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ + # Default: true + skip-dirs-use-default: false + + # Which files to skip: they will be analyzed, but issues from them won't be reported. + # Default value is empty list, + # but there is no need to include all autogenerated files, + # we confidently recognize autogenerated files. + # If it's not please let us know. + # "/" will be replaced by current OS file path separator to properly work on Windows. skip-files: - ".*\\.my\\.go$" - lib/bad.go - # by default isn't set. If set we pass it to "go list -mod={option}". From "go help modules": + # By default, it isn't set. + # If set we pass it to "go list -mod={option}". From "go help modules": # If invoked with -mod=readonly, the go command is disallowed from the implicit # automatic updating of go.mod described above. Instead, it fails when any changes # to go.mod are needed. This setting is most useful to check that go.mod does @@ -60,72 +65,81 @@ run: # output configuration options output: - # colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions - # default is "colored-line-number" - # multiple can be specified by separating them by comma, output can be provided + # Format: colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions + # + # Multiple can be specified by separating them by comma, output can be provided # for each of them by separating format name and path by colon symbol. # Output path can be either `stdout`, `stderr` or path to the file to write to. - # Example "checkstyle:report.json,colored-line-number" - format: colored-line-number + # Example: "checkstyle:report.json,colored-line-number" + # + # Default: colored-line-number + format: json - # print lines of code with issue, default is true - print-issued-lines: true + # Print lines of code with issue. + # Default: true + print-issued-lines: false - # print linter name in the end of issue text, default is true - print-linter-name: true + # Print linter name in the end of issue text. + # Default: true + print-linter-name: false - # make issues output unique by line, default is true - uniq-by-line: true + # Make issues output unique by line. + # Default: true + uniq-by-line: false - # add a prefix to the output file references; default is no prefix + # Add a prefix to the output file references. + # Default is no prefix. path-prefix: "" - # sorts results by: filepath, line and column + # Sort results by: filepath, line and column. sort-results: false -# all available settings of specific linters +# All available settings of specific linters. linters-settings: bidichk: - # The following configurations check for all mentioned invisible unicode - # runes. It can be omitted because all runes are enabled by default. - left-to-right-embedding: true - right-to-left-embedding: true - pop-directional-formatting: true - left-to-right-override: true - right-to-left-override: true - left-to-right-isolate: true - right-to-left-isolate: true - first-strong-isolate: true - pop-directional-isolate: true + # The following configurations check for all mentioned invisible unicode runes. + # All runes are enabled by default. + left-to-right-embedding: false + right-to-left-embedding: false + pop-directional-formatting: false + left-to-right-override: false + right-to-left-override: false + left-to-right-isolate: false + right-to-left-isolate: false + first-strong-isolate: false + pop-directional-isolate: false cyclop: - # the maximal code complexity to report + # The maximal code complexity to report. max-complexity: 10 - # the maximal average package complexity. If it's higher than 0.0 (float) the check is enabled (default 0.0) - package-average: 0.0 - # should ignore tests (default false) - skip-tests: false + # The maximal average package complexity. + # If it's higher than 0.0 (float) the check is enabled + # Default: 0.0 + package-average: 0.5 + # Should ignore tests. + # Default: false + skip-tests: true decorder: - # required order of type, const, var and func declarations inside a file - # default: types before constants before variables before functions + # Required order of `type`, `const`, `var` and `func` declarations inside a file. + # Default: types before constants before variables before functions. dec-order: - type - const - var - func - # if true, order of declarations is not checked at all - # default: true (disabled) + # If true, order of declarations is not checked at all. + # Default: true (disabled) disable-dec-order-check: false - # if true, init func can be anywhere in file (must not be declared before all other functions) - # default: true (disabled) + # If true, `init` func can be anywhere in file (must not be declared before all other functions). + # Default: true (disabled) disable-init-func-first-check: false - # if true, multiple global type, const and var declarations are allowed - # default: true (disabled) + # If true, multiple global `type`, `const` and `var` declarations are allowed. + # Default: true (disabled) disable-dec-num-check: false depguard: @@ -134,49 +148,55 @@ linters-settings: packages: - github.com/sirupsen/logrus packages-with-error-message: - # specify an error message to output when a denied package is used - - github.com/sirupsen/logrus: "logging is allowed only by logutils.Log" - # create additional guards that follow the same configuration pattern - # results from all guards are aggregated together + # Specify an error message to output when a denied package is used. + - github.com/sirupsen/logrus: 'logging is allowed only by logutils.Log' + # Create additional guards that follow the same configuration pattern. + # Results from all guards are aggregated together. additional-guards: - list-type: denylist include-go-root: false packages: - github.com/stretchr/testify - # specify rules by which the linter ignores certain files for consideration + # Specify rules by which the linter ignores certain files for consideration. ignore-file-rules: - "**/*_test.go" - "**/mock/**/*.go" dogsled: - # checks assignments with too many blank identifiers; default is 2 - max-blank-identifiers: 2 + # Checks assignments with too many blank identifiers. + # Default: 2 + max-blank-identifiers: 3 dupl: - # tokens count to trigger issue, 150 by default + # Tokens count to trigger issue. + # Default: 150 threshold: 100 errcheck: - # report about not checking of errors in type assertions: `a := b.(MyStruct)`; - # default is false: such cases aren't reported by default. - check-type-assertions: false + # Report about not checking of errors in type assertions: `a := b.(MyStruct)`. + # Such cases aren't reported by default. + # Default: false + check-type-assertions: true - # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`; - # default is false: such cases aren't reported by default. - check-blank: false + # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`. + # Such cases aren't reported by default. + # Default: false + check-blank: true - # [deprecated] comma-separated list of pairs of the form pkg:regex + # DEPRECATED comma-separated list of pairs of the form pkg:regex + # # the regex is used to ignore names within pkg. (default "fmt:.*"). # see https://github.com/kisielk/errcheck#the-deprecated-method for details ignore: fmt:.*,io/ioutil:^Read.* - # [deprecated] use exclude-functions instead. - # path to a file containing a list of functions to exclude from checking - # see https://github.com/kisielk/errcheck#excluding-functions for details + # DEPRECATED use exclude-functions instead. + # + # Path to a file containing a list of functions to exclude from checking. + # See https://github.com/kisielk/errcheck#excluding-functions for details. exclude: /path/to/file.txt - # list of functions to exclude from checking, where each entry is a single function to exclude. - # see https://github.com/kisielk/errcheck#excluding-functions for details + # List of functions to exclude from checking, where each entry is a single function to exclude. + # See https://github.com/kisielk/errcheck#excluding-functions for details. exclude-functions: - io/ioutil.ReadFile - io.Copy(*bytes.Buffer) @@ -196,49 +216,50 @@ linters-settings: # - encoding/json.Marshal # - encoding/json.MarshalIndent # - # default: false + # Default: false check-error-free-encoding: true # Issue on struct encoding that doesn't have exported fields. - # default: false + # Default: false report-no-exported: false errorlint: - # Check whether fmt.Errorf uses the %w verb for formatting errors. See the readme for caveats + # Check whether fmt.Errorf uses the %w verb for formatting errors. + # See the https://github.com/polyfloyd/go-errorlint for caveats. errorf: true - # Check for plain type assertions and type switches + # Check for plain type assertions and type switches. asserts: true - # Check for plain error comparisons + # Check for plain error comparisons. comparison: true exhaustive: - # check switch statements in generated files also + # Check switch statements in generated files also. check-generated: false - # presence of "default" case in switch statements satisfies exhaustiveness, - # even if all enum members are not listed + # Presence of "default" case in switch statements satisfies exhaustiveness, + # even if all enum members are not listed. default-signifies-exhaustive: false - # enum members matching the supplied regex do not have to be listed in - # switch statements to satisfy exhaustiveness + # Enum members matching the supplied regex do not have to be listed in + # switch statements to satisfy exhaustiveness. ignore-enum-members: "" - # consider enums only in package scopes, not in inner scopes + # Consider enums only in package scopes, not in inner scopes. package-scope-only: false exhaustivestruct: - # Struct Patterns is list of expressions to match struct packages and names - # The struct packages have the form example.com/package.ExampleStruct - # The matching patterns can use matching syntax from https://pkg.go.dev/path#Match + # Struct Patterns is list of expressions to match struct packages and names. + # The struct packages have the form `example.com/package.ExampleStruct`. + # The matching patterns can use matching syntax from https://pkg.go.dev/path#Match. # If this list is empty, all structs are tested. struct-patterns: - '*.Test' - 'example.com/package.ExampleStruct' forbidigo: - # Forbid the following identifiers (list of regexp): + # Forbid the following identifiers (list of regexp). forbid: - ^print.*$ - 'fmt\.Print.*' # Exclude godoc examples from forbidigo checks. - # default: true + # Default: true exclude_godoc_examples: false funlen: @@ -246,59 +267,61 @@ linters-settings: statements: 40 gci: - # put imports beginning with prefix after 3rd-party packages; - # only support one prefix - # if not set, use goimports.local-prefixes + # Put imports beginning with prefix after 3rd-party packages. + # Only support one prefix. + # If not set, use `goimports.local-prefixes`. local-prefixes: github.com/org/project gocognit: # Minimal code complexity to report - # default: 30, (but we recommended 10-20) + # Default: 30, (but we recommend 10-20) min-complexity: 10 goconst: - # Minimal length of string constant - # default: 3 - min-len: 3 - # Minimum occurrences of constant string count to trigger issue - # default: 3 - min-occurrences: 3 - # Ignore test files - # default: false - ignore-tests: false - # Look for existing constants matching the values - # default: true - match-constant: true + # Minimal length of string constant. + # Default: 3 + min-len: 2 + # Minimum occurrences of constant string count to trigger issue. + # Default: 3 + min-occurrences: 2 + # Ignore test files. + # Default: false + ignore-tests: true + # Look for existing constants matching the values. + # Default: true + match-constant: false # Search also for duplicated numbers. - # default: false - numbers: false + # Default: false + numbers: true # Minimum value, only works with goconst.numbers - # default: 3 - min: 3 + # Default: 3 + min: 2 # Maximum value, only works with goconst.numbers - # default: 3 - max: 3 - # Ignore when constant is not used as function argument - # default: true - ignore-calls: true + # Default: 3 + max: 2 + # Ignore when constant is not used as function argument. + # Default: true + ignore-calls: false gocritic: - # Which checks should be enabled; can't be combined with 'disabled-checks'; - # See https://go-critic.github.io/overview#checks-overview - # To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run` - # By default list of stable checks is used. + # Which checks should be enabled; can't be combined with 'disabled-checks'. + # See https://go-critic.github.io/overview#checks-overview. + # To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run`. + # By default, list of stable checks is used. enabled-checks: - nestingReduce - - unnamedresult + - unnamedResult - ruleguard - truncateCmp - # Which checks should be disabled; can't be combined with 'enabled-checks'; default is empty + # Which checks should be disabled; can't be combined with 'enabled-checks'. + # Default: [] disabled-checks: - regexpMust # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks. - # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags". + # See https://github.com/go-critic/go-critic#usage -> section "Tags". + # Default: [] enabled-tags: - performance disabled-tags: @@ -308,28 +331,37 @@ linters-settings: # The settings key is the name of a supported gocritic checker. # The list of supported checkers can be find in https://go-critic.github.io/overview. settings: - captLocal: # must be valid enabled check name - # whether to restrict checker to params only (default true) - paramsOnly: true + # Must be valid enabled check name. + captLocal: + # Whether to restrict checker to params only. + # Default: true + paramsOnly: false elseif: - # whether to skip balanced if-else pairs (default true) - skipBalanced: true + # Whether to skip balanced if-else pairs. + # Default: true + skipBalanced: false hugeParam: - # size in bytes that makes the warning trigger (default 80) - sizeThreshold: 80 + # Size in bytes that makes the warning trigger. + # Default: 80 + sizeThreshold: 70 nestingReduce: - # min number of statements inside a branch to trigger a warning (default 5) - bodyWidth: 5 + # Min number of statements inside a branch to trigger a warning. + # Default: 5 + bodyWidth: 4 rangeExprCopy: - # size in bytes that makes the warning trigger (default 512) - sizeThreshold: 512 - # whether to check test functions (default true) - skipTestFuncs: true + # Size in bytes that makes the warning trigger. + # Default: 512 + sizeThreshold: 516 + # Whether to check test functions + # Default: true + skipTestFuncs: false rangeValCopy: - # size in bytes that makes the warning trigger (default 128) + # Size in bytes that makes the warning trigger. + # Default: 128 sizeThreshold: 32 - # whether to check test functions (default true) - skipTestFuncs: true + # Whether to check test functions. + # Default: true + skipTestFuncs: false ruleguard: # Enable debug to identify which 'Where' condition was rejected. # The value of the parameter is the name of a function in a ruleguard file. @@ -359,65 +391,78 @@ linters-settings: # Glob patterns such as 'rules-*.go' may be specified. rules: '${configDir}/ruleguard/rules-*.go,${configDir}/myrule1.go' tooManyResultsChecker: - # maximum number of results (default 5) + # Maximum number of results. + # Default: 5 maxResults: 10 truncateCmp: - # whether to skip int/uint/uintptr types (default true) - skipArchDependent: true + # Whether to skip int/uint/uintptr types. + # Default: true + skipArchDependent: false underef: - # whether to skip (*x).method() calls where x is a pointer receiver (default true) - skipRecvDeref: true + # Whether to skip (*x).method() calls where x is a pointer receiver. + # Default: true + skipRecvDeref: false unnamedResult: - # whether to check exported functions + # Whether to check exported functions. checkExported: true gocyclo: - # minimal code complexity to report, 30 by default (but we recommend 10-20) + # Minimal code complexity to report. + # Default: 30, (but we recommend 10-20) min-complexity: 10 godot: - # comments to be checked: `declarations`, `toplevel`, or `all` (default: declarations) + # Comments to be checked: `declarations`, `toplevel`, or `all`. + # Default: declarations scope: toplevel - # list of regexps for excluding particular comment lines from check + # List of regexps for excluding particular comment lines from check. exclude: - # exclude todo and fixme comments + # Exclude todo and fixme comments. - "^fixme:" - "^todo:" - # check that each sentence ends with a period (default: true) + # Check that each sentence ends with a period. + # Default: true period: false - # check that each sentence starts with a capital letter (default: false) + # Check that each sentence starts with a capital letter. + # Default: false capital: true godox: - # report any comments starting with keywords, this is useful for TODO or FIXME comments that - # might be left in the code accidentally and should be resolved before merging - keywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting + # Report any comments starting with keywords, this is useful for TODO or FIXME comments that + # might be left in the code accidentally and should be resolved before merging. + # Default: TODO, BUG, and FIXME. + keywords: - NOTE - OPTIMIZE # marks code that should be optimized before merging - - HACK # marks hack-arounds that should be removed before merging + - HACK # marks hack-around that should be removed before merging gofmt: - # simplify code: gofmt with `-s` option, true by default - simplify: true + # Simplify code: gofmt with `-s` option. + # Default: true + simplify: false gofumpt: - # Select the Go version to target. The default is `1.15`. + # Select the Go version to target. + # Default: 1.15 lang-version: "1.15" - # Choose whether or not to use the extra rules that are disabled - # by default - extra-rules: false + # Choose whether to use the extra rules. + # Default: false + extra-rules: true goheader: values: const: - # define here const type values in format k:v, for example: + # Define here const type values in format k:v. + # For example: # COMPANY: MY COMPANY regexp: - # define here regexp type values, for example + # Define here regexp type values. + # for example: # AUTHOR: .*@mycompany\.com template: # |- - # put here copyright header template for source code files, for example: + # Put here copyright header template for source code files + # For example: # Note: {{ YEAR }} is a builtin value that returns the year relative to the current machine time. # # {{ AUTHOR }} {{ COMPANY }} {{ YEAR }} @@ -435,16 +480,17 @@ linters-settings: # See the License for the specific language governing permissions and # limitations under the License. template-path: - # also as alternative of directive 'template' you may put the path to file with the template source + # Also, as alternative of directive 'template' you may put the path to file with the template source. goimports: - # put imports beginning with prefix after 3rd-party packages; - # it's a comma-separated list of prefixes + # Put imports beginning with prefix after 3rd-party packages. + # It's a comma-separated list of prefixes. local-prefixes: github.com/org/project golint: - # minimal confidence for issues, default is 0.8 - min-confidence: 0.8 + # Minimal confidence for issues. + # Default: 0.8 + min-confidence: 0.7 gomnd: # List of enabled checks, see https://github.com/tommy-muehle/go-mnd/#checks for description. @@ -473,36 +519,51 @@ linters-settings: - 'http.StatusText' gomoddirectives: - # Allow local `replace` directives. Default is false. + # Allow local `replace` directives. replace-local: false - # List of allowed `replace` directives. Default is empty. + # List of allowed `replace` directives. + # Default: [] replace-allow-list: - launchpad.net/gocheck - # Allow to not explain why the version has been retracted in the `retract` directives. Default is false. + # Allow to not explain why the version has been retracted in the `retract` directives. + # Default: false retract-allow-no-explanation: false - # Forbid the use of the `exclude` directives. Default is false. + # Forbid the use of the `exclude` directives. + # Default: false exclude-forbidden: false gomodguard: allowed: - modules: # List of allowed modules - # - gopkg.in/yaml.v2 - domains: # List of allowed module domains - # - golang.org + # List of allowed modules. + modules: + - gopkg.in/yaml.v2 + # List of allowed module domains. + domains: + - golang.org blocked: - modules: # List of blocked modules - # - github.com/uudashr/go-module: # Blocked module - # recommendations: # Recommended modules that should be used instead (Optional) - # - golang.org/x/mod - # reason: "`mod` is the official go.mod parser library." # Reason why the recommended module should be used (Optional) - versions: # List of blocked module version constraints - # - github.com/mitchellh/go-homedir: # Blocked module with version constraint - # version: "< 1.1.0" # Version constraint, see https://github.com/Masterminds/semver#basic-comparisons - # reason: "testing if blocked version constraint works." # Reason why the version constraint exists. (Optional) - local_replace_directives: false # Set to true to raise lint issues for packages that are loaded from a local path via replace directive + # List of blocked modules. + modules: + # Blocked module. + - github.com/uudashr/go-module: + # Recommended modules that should be used instead. (Optional) + recommendations: + - golang.org/x/mod + # Reason why the recommended module should be used. (Optional) + reason: "`mod` is the official go.mod parser library." + # List of blocked module version constraints. + versions: + # Blocked module with version constraint. + - github.com/mitchellh/go-homedir: + # Version constraint, see https://github.com/Masterminds/semver#basic-comparisons. + version: "< 1.1.0" + # Reason why the version constraint exists. (Optional) + reason: "testing if blocked version constraint works." + # Set to true to raise lint issues for packages that are loaded from a local path via replace directive. + local_replace_directives: false gosimple: - # Select the Go version to target. The default is '1.13'. + # Select the Go version to target. + # Default: 1.13 go: "1.15" # https://staticcheck.io/docs/options#checks checks: [ "all" ] @@ -520,9 +581,11 @@ linters-settings: - G204 # Exclude generated files exclude-generated: true - # Filter out the issues with a lower severity than the given value. Valid options are: low, medium, high. + # Filter out the issues with a lower severity than the given value. + # Valid options are: low, medium, high. severity: "low" - # Filter out the issues with a lower confidence than the given value. Valid options are: low, medium, high. + # Filter out the issues with a lower confidence than the given value. + # Valid options are: low, medium, high. confidence: "low" # To specify the configuration of rules. # The configuration of rules is not fully documented by gosec: @@ -538,26 +601,106 @@ linters-settings: truncate: "32" govet: - # report about shadowed variables + # Report about shadowed variables. + # Default: false check-shadowing: true - # settings per analyzer + # Settings per analyzer. settings: - printf: # analyzer name, run `go tool vet help` to see all analyzers - funcs: # run `go tool vet help printf` to see available settings for `printf` analyzer + # Analyzer name, run `go tool vet help` to see all analyzers. + printf: + # Run `go tool vet help printf` to see available settings for `printf` analyzer. + funcs: - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf - # enable or disable analyzers by name - # run `go tool vet help` to see all analyzers + # Disable all analyzers. + # Default: false + disable-all: true + # Enable analyzers by name. + # Run `go tool vet help` to see all analyzers. enable: + - asmdecl + - assign + - atomic - atomicalign - enable-all: false + - bools + - buildtag + - cgocall + - composites + - copylocks + - deepequalerrors + - errorsas + - fieldalignment + - findcall + - framepointer + - httpresponse + - ifaceassert + - loopclosure + - lostcancel + - nilfunc + - nilness + - printf + - reflectvaluecompare + - shadow + - shift + - sigchanyzer + - sortslice + - stdmethods + - stringintconv + - structtag + - testinggoroutine + - tests + - unmarshal + - unreachable + - unsafeptr + - unusedresult + - unusedwrite + + # Enable all analyzers. + # Default: false + enable-all: true + # Disable analyzers by name. + # Run `go tool vet help` to see all analyzers. disable: + - asmdecl + - assign + - atomic + - atomicalign + - bools + - buildtag + - cgocall + - composites + - copylocks + - deepequalerrors + - errorsas + - fieldalignment + - findcall + - framepointer + - httpresponse + - ifaceassert + - loopclosure + - lostcancel + - nilfunc + - nilness + - printf + - reflectvaluecompare - shadow - disable-all: false + - shift + - sigchanyzer + - sortslice + - stdmethods + - stringintconv + - structtag + - testinggoroutine + - tests + - unmarshal + - unreachable + - unsafeptr + - unusedresult + - unusedwrite bannedfunc: # 禁用函数采用键值对形式 @@ -593,15 +736,17 @@ linters-settings: importas: # Do not allow unaliased imports of aliased packages. + # Default: false no-unaliased: true # Do not allow non-required aliases. + # Default: false no-extra-aliases: true # List of aliases alias: - # using `servingv1` alias for `knative.dev/serving/pkg/apis/serving/v1` package + # Using `servingv1` alias for `knative.dev/serving/pkg/apis/serving/v1` package. - pkg: knative.dev/serving/pkg/apis/serving/v1 alias: servingv1 - # using `autoscalingv1alpha1` alias for `knative.dev/serving/pkg/apis/autoscaling/v1alpha1` package + # Using `autoscalingv1alpha1` alias for `knative.dev/serving/pkg/apis/autoscaling/v1alpha1` package. - pkg: knative.dev/serving/pkg/apis/autoscaling/v1alpha1 alias: autoscalingv1alpha1 # You can specify the package path by regular expression, @@ -622,55 +767,63 @@ linters-settings: # By default, it allows using errors, empty interfaces, anonymous interfaces, # and interfaces provided by the standard library. allow: - - anon - - error - - empty - - stdlib - # You can specify idiomatic endings for interface - - (or|er)$ - + - anon + - error + - empty + - stdlib + # You can specify idiomatic endings for interface + - (or|er)$ + + # reject-list of interfaces reject: - - github.com\/user\/package\/v4\.Type + - github.com\/user\/package\/v4\.Type lll: - # max line length, lines longer will be reported. Default is 120. - # '\t' is counted as 1 character by default, and can be changed with the tab-width option + # Max line length, lines longer will be reported. + # '\t' is counted as 1 character by default, and can be changed with the tab-width option. + # Default: 120. line-length: 120 - # tab width in spaces. Default to 1. + # Tab width in spaces. + # Default: 1 tab-width: 1 maintidx: # Show functions with maintainability index lower than N. # A high index indicates better maintainability (it's kind of the opposite of complexity). - # default: 20 + # Default: 20 under: 100 makezero: - # Allow only slices initialized with a length of zero. Default is false. + # Allow only slices initialized with a length of zero. + # Default: false always: false maligned: - # print struct with more effective memory layout or not, false by default + # Print struct with more effective memory layout or not. + # Default: false suggest-new: true misspell: # Correct spellings using locale preferences for US or UK. - # Default is to use a neutral variety of English. # Setting locale to US will correct the British spelling of 'colour' to 'color'. + # Default is to use a neutral variety of English. locale: US ignore-words: - someword nakedret: - # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 - max-func-lines: 30 + # Make an issue if func has more lines of code than this setting, and it has naked returns. + # Default: 30 + max-func-lines: 31 nestif: - # minimal complexity of if statements to report, 5 by default + # Minimal complexity of if statements to report. + # Default: 5 min-complexity: 4 nilnil: - # By default, nilnil checks all returned types below. + # Checks that there is no simultaneous return of `nil` error and an invalid value. + # Default: ptr, func, iface, map, chan checked-types: - ptr - func @@ -679,55 +832,65 @@ linters-settings: - chan nlreturn: - # size of the block (including return statement that is still "OK") + # Size of the block (including return statement that is still "OK") # so no return split required. block-size: 1 nolintlint: - # Disable to ensure that all nolint directives actually have an effect. Default is false. + # Disable to ensure that all nolint directives actually have an effect. + # Default: false allow-unused: false - # Disable to ensure that nolint directives don't have a leading space. Default is true. + # Disable to ensure that nolint directives don't have a leading space. + # Default: true allow-leading-space: true - # Exclude following linters from requiring an explanation. Default is []. + # Exclude following linters from requiring an explanation. + # Default: [] allow-no-explanation: [ ] - # Enable to require an explanation of nonzero length after each nolint directive. Default is false. + # Enable to require an explanation of nonzero length after each nolint directive. + # Default: false require-explanation: true - # Enable to require nolint directives to mention the specific linter being suppressed. Default is false. + # Enable to require nolint directives to mention the specific linter being suppressed. + # Default: false require-specific: true prealloc: - # XXX: we don't recommend using this linter before doing performance profiling. + # IMPORTANT: we don't recommend using this linter before doing performance profiling. # For most programs usage of prealloc will be a premature optimization. - # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. - # True by default. - simple: true - range-loops: true # Report preallocation suggestions on range loops, true by default - for-loops: false # Report preallocation suggestions on for loops, false by default + # Report pre-allocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. + # Default: true + simple: false + # Report pre-allocation suggestions on range loops. + # Default: true + range-loops: false + # Report pre-allocation suggestions on for loops. + # Default: false + for-loops: true predeclared: - # comma-separated list of predeclared identifiers to not report on + # Comma-separated list of predeclared identifiers to not report on. ignore: "" - # include method names and field names (i.e., qualified names) in checks + # Include method names and field names (i.e., qualified names) in checks. q: false promlinter: # Promlinter cannot infer all metrics name in static analysis. # Enable strict mode will also include the errors caused by failing to parse the args. - strict: false + # Default: false + strict: true # Please refer to https://github.com/yeya24/promlinter#usage for detailed usage. disabled-linters: - - "Help" - - "MetricUnits" - - "Counter" - - "HistogramSummaryReserved" - - "MetricTypeInName" - - "ReservedChars" - - "CamelCase" - - "UnitAbbreviations" + - Help + - MetricUnits + - Counter + - HistogramSummaryReserved + - MetricTypeInName + - ReservedChars + - CamelCase + - UnitAbbreviations revive: - # see https://github.com/mgechev/revive#available-rules for details. + # See https://github.com/mgechev/revive#available-rules for details. ignore-generated-header: true severity: warning enable-all-rules: false @@ -979,8 +1142,8 @@ linters-settings: severity: warning disable: false arguments: - - [ "ID" ] # Allowlist - - [ "VM" ] # Denylist + - [ "ID" ] # AllowList + - [ "VM" ] # DenyList # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-declaration - name: var-declaration severity: warning @@ -1053,13 +1216,14 @@ linters-settings: http-status-code-whitelist: [ "200", "400", "404", "500" ] tagliatelle: - # check the struck tag name case + # Check the struck tag name case. case: - # use the struct field name to check the name of the struct tag + # Use the struct field name to check the name of the struct tag. + # Default: false use-field-name: true rules: - # any struct tag type can be used. - # support string case: `camel`, `pascal`, `kebab`, `snake`, `goCamel`, `goPascal`, `goKebab`, `goSnake`, `upper`, `lower` + # Any struct tag type can be used. + # Support string case: `camel`, `pascal`, `kebab`, `snake`, `goCamel`, `goPascal`, `goKebab`, `goSnake`, `upper`, `lower` json: camel yaml: camel xml: camel @@ -1077,56 +1241,68 @@ linters-settings: skip-regexp: (export|internal)_test\.go thelper: - # The following configurations enable all checks. It can be omitted because all checks are enabled by default. - # You can enable only required checks deleting unnecessary checks. + # The following configurations enable all checks. + # All checks are enabled by default. test: - first: true - name: true - begin: true + first: false + name: false + begin: false benchmark: - first: true - name: true - begin: true + first: false + name: false + begin: false tb: - first: true - name: true - begin: true - + first: false + name: false + begin: false unparam: - # Inspect exported functions, default is false. Set to true if no external program/library imports your code. + # Inspect exported functions. + # + # Set to true if no external program/library imports your code. # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors: # if it's called for subdir of a project it can't find external interfaces. All text editor integrations # with golangci-lint call it on a directory with the changed file. - check-exported: false + # + # Default: false + check-exported: true varcheck: # Check usage of exported fields and variables. exported-fields: true varnamelen: - # The longest distance, in source lines, that is being considered a "small scope." (defaults to 5) + # The longest distance, in source lines, that is being considered a "small scope". # Variables used in at most this many lines will be ignored. + # Default: 5 max-distance: 6 - # The minimum length of a variable's name that is considered "long." (defaults to 3) + # The minimum length of a variable's name that is considered "long". # Variable names that are at least this long will be ignored. + # Default: 3 min-name-length: 2 - # Check method receiver names. (defaults to false) - check-receiver: false - # Check named return values. (defaults to false) - check-return: false - # Ignore "ok" variables that hold the bool return value of a type assertion. (defaults to false) - ignore-type-assert-ok: false - # Ignore "ok" variables that hold the bool return value of a map index. (defaults to false) - ignore-map-index-ok: false - # Ignore "ok" variables that hold the bool return value of a channel receive. (defaults to false) - ignore-chan-recv-ok: false - # Optional list of variable names that should be ignored completely. (defaults to empty list) + # Check method receiver names. + # Default: false + check-receiver: true + # Check named return values. + # Default: false + check-return: true + # Ignore "ok" variables that hold the bool return value of a type assertion. + # Default: false + ignore-type-assert-ok: true + # Ignore "ok" variables that hold the bool return value of a map index. + # Default: false + ignore-map-index-ok: true + # Ignore "ok" variables that hold the bool return value of a channel receive. + # Default: false + ignore-chan-recv-ok: true + # Optional list of variable names that should be ignored completely. + # Default: [] ignore-names: - err - # Optional list of variable declarations that should be ignored completely. (defaults to empty list) - # Entries must be in the form of " " or " *" for - # variables, or "const " for constants. + # Optional list of variable declarations that should be ignored completely. + # Entries must be in the form of " " or " *" + # for variables, or "const " for constants. + # Default: [] ignore-decls: - c echo.Context - t testing.T @@ -1136,8 +1312,10 @@ linters-settings: - const C whitespace: - multi-if: false # Enforces newlines (or comments) after every multi-line if statement - multi-func: false # Enforces newlines (or comments) after every multi-line function signature + # Enforces newlines (or comments) after every multi-line if statement. + multi-if: false + # Enforces newlines (or comments) after every multi-line function signature. + multi-func: false wrapcheck: # An array of strings that specify substrings of signatures to ignore. @@ -1159,52 +1337,283 @@ linters-settings: - github.com/pkg/* wsl: - # See https://github.com/bombsimon/wsl/blob/master/doc/configuration.md for - # documentation of available settings. These are the defaults for - # `golangci-lint`. + # See https://github.com/bombsimon/wsl/blob/master/doc/configuration.md for documentation of available settings. + # These are the defaults for `golangci-lint`. + + # Controls if you may cuddle assignments and anything without needing an empty line between them. + # Default: false allow-assign-and-anything: false + + # Controls if you may cuddle assignments and calls without needing an empty line between them. + # Default: true allow-assign-and-call: true + + # Controls if you're allowed to cuddle multiple declarations. + # This is false by default to encourage you to group them in one var block. + # One major benefit with this is that if the variables are assigned the assignments will be tabulated. + # Default: false allow-cuddle-declarations: false + + # Controls if you may cuddle assignments even if they span over multiple lines. + # Default: true allow-multiline-assign: true + + # This option allows whitespace after each comment group that begins a block. + # Default: false allow-separated-leading-comment: false + + # Controls if blocks can end with comments. + # This is not encouraged sine it's usually code smell but might be useful do improve understanding or learning purposes. + # To be allowed there must be no whitespace between the comment and the last statement or the comment and the closing brace. + # Default: false allow-trailing-comment: false + + # Can be set to force trailing newlines at the end of case blocks to improve readability. + # If the number of lines (including comments) in a case block exceeds this number + # a linter error will be yielded if the case does not end with a newline. + # Default: 0 force-case-trailing-whitespace: 0 + + # Enforces that an `if` statement checking an error variable is cuddled + # with the line that assigned that error variable. + # Default: false force-err-cuddling: false + + # Enforces that an assignment which is actually a short declaration (using `:=`) + # is only allowed to cuddle with other short declarations, and not plain assignments, blocks, etc. + # This rule helps make declarations stand out by themselves, much the same as grouping var statement. + # Default: false force-short-decl-cuddling: false + + # Controls if the checks for slice append should be "strict" + # in the sense that it will only allow these assignments to be cuddled with variables being appended. + # Default: true strict-append: true # The custom section can be used to define linter plugins to be loaded at runtime. - # See README doc for more info. + # See README documentation for more info. custom: # Each custom linter should have a unique name. - example: - # The path to the plugin *.so. Can be absolute or local. Required for each custom linter + example: + # The path to the plugin *.so. Can be absolute or local. + # Required for each custom linter. path: /path/to/example.so - # The description of the linter. Optional, just for documentation purposes. + # The description of the linter. + # Optional. description: This is an example usage of a plugin linter. - # Intended to point to the repo location of the linter. Optional, just for documentation purposes. + # Intended to point to the repo location of the linter. + # Optional. original-url: github.com/golangci/example-linter linters: + # Disable all linters. disable-all: true + # Enable specific linter + # https://golangci-lint.run/usage/linters/#enabled-by-default-linters enable: - - megacheck + - asciicheck + - bidichk + - bodyclose + - contextcheck + - cyclop + - deadcode + - depguard + - dogsled + - dupl + - durationcheck + - errcheck + - errname + - errorlint + - exhaustive + - exhaustivestruct + - exportloopref + - forbidigo + - forcetypeassert + - funlen + - gci + - gochecknoglobals + - gochecknoinits + - gocognit + - goconst + - gocritic + - gocyclo + - godot + - godox + - goerr113 + - gofmt + - gofumpt + - goheader + - goimports + - golint + - gomnd + - gomoddirectives + - gomodguard + - goprintffuncname + - gosec + - gosimple - govet + - ifshort + - importas + - ineffassign + - interfacer + - ireturn + - lll + - makezero + - maligned + - misspell + - nakedret + - nestif + - nilerr + - nilnil + - nlreturn + - noctx + - nolintlint + - paralleltest + - prealloc + - predeclared + - promlinter + - revive + - rowserrcheck + - scopelint + - sqlclosecheck + - staticcheck + - structcheck + - stylecheck + - tagliatelle + - tenv + - testpackage + - thelper + - tparallel + - typecheck + - unconvert + - unparam + - unused + - varcheck + - varnamelen + - wastedassign + - whitespace + - wrapcheck + - wsl + + # Enable all available linters. enable-all: true + # Disable specific linter + # https://golangci-lint.run/usage/linters/#disabled-by-default-linters--e--enable disable: + - asciicheck + - bidichk + - bodyclose + - contextcheck + - cyclop + - deadcode + - depguard + - dogsled + - dupl + - durationcheck + - errcheck + - errname + - errorlint + - exhaustive + - exhaustivestruct + - exportloopref + - forbidigo + - forcetypeassert + - funlen + - gci + - gochecknoglobals + - gochecknoinits + - gocognit + - goconst + - gocritic + - gocyclo + - godot + - godox + - goerr113 + - gofmt + - gofumpt + - goheader + - goimports + - golint + - gomnd + - gomoddirectives + - gomodguard + - goprintffuncname + - gosec + - gosimple + - govet + - ifshort + - importas + - ineffassign + - interfacer + - ireturn + - lll + - makezero - maligned + - misspell + - nakedret + - nestif + - nilerr + - nilnil + - nlreturn + - noctx + - nolintlint + - paralleltest - prealloc + - predeclared + - promlinter + - revive + - rowserrcheck + - scopelint + - sqlclosecheck + - staticcheck + - structcheck + - stylecheck + - tagliatelle + - tenv + - testpackage + - thelper + - tparallel + - typecheck + - unconvert + - unparam + - unused + - varcheck + - varnamelen + - wastedassign + - whitespace + - wrapcheck + - wsl + + # Enable presets. + # https://golangci-lint.run/usage/linters presets: - bugs + - comment + - complexity + - error + - format + - import + - metalinter + - module + - performance + - sql + - style + - test - unused - fast: false + + # Run only fast linters from enabled linters set (first run won't be fast) + # Default: false + fast: true issues: - # List of regexps of issue texts to exclude, empty list by default. - # But independently from this option we use default exclude patterns, - # it can be disabled by `exclude-use-default: false`. To list all - # excluded by default patterns execute `golangci-lint run --help` + # List of regexps of issue texts to exclude. + # + # But independently of this option we use default exclude patterns, + # it can be disabled by `exclude-use-default: false`. + # To list all excluded by default patterns execute `golangci-lint run --help` + # + # Default: [] exclude: - abcdef @@ -1219,79 +1628,88 @@ issues: - gosec # Exclude known linters from partially hard-vendored code, - # which is impossible to exclude via "nolint" comments. + # which is impossible to exclude via `nolint` comments. - path: internal/hmac/ text: "weak cryptographic primitive" linters: - gosec - # Exclude some staticcheck messages + # Exclude some `staticcheck` messages. - linters: - staticcheck text: "SA9003:" - # Exclude lll issues for long lines with go:generate + # Exclude `lll` issues for long lines with `go:generate`. - linters: - lll source: "^//go:generate " - # Independently from option `exclude` we use default exclude patterns, - # it can be disabled by this option. To list all - # excluded by default patterns execute `golangci-lint run --help`. - # Default value for this option is true. + # Independently of option `exclude` we use default exclude patterns, + # it can be disabled by this option. + # To list all excluded by default patterns execute `golangci-lint run --help`. + # Default: true. exclude-use-default: false - # The default value is false. If set to true exclude and exclude-rules - # regular expressions become case sensitive. + # If set to true exclude and exclude-rules regular expressions become case-sensitive. + # Default: false exclude-case-sensitive: false - # The list of ids of default excludes to include or disable. By default it's empty. + # The list of ids of default excludes to include or disable. + # Default: [] include: - - EXC0002 # disable excluding of issues about comments from golint + - EXC0002 # disable excluding of issues about comments from golint. - # Maximum issues count per one linter. Set to 0 to disable. Default is 50. + # Maximum issues count per one linter. + # Set to 0 to disable. + # Default: 50 max-issues-per-linter: 0 - # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. + # Maximum count of issues with the same text. + # Set to 0 to disable. + # Default: 3 max-same-issues: 0 # Show only new issues: if there are unstaged changes or untracked files, # only those changes are analyzed, else only changes in HEAD~ are analyzed. - # It's a super-useful option for integration of golangci-lint into existing - # large codebase. It's not practical to fix all existing issues at the moment - # of integration: much better don't allow issues in new code. - # Default is false. - new: false + # It's a super-useful option for integration of golangci-lint into existing large codebase. + # It's not practical to fix all existing issues at the moment of integration: + # much better don't allow issues in new code. + # + # Default: false. + new: true - # Show only new issues created after git revision `REV` - new-from-rev: REV + # Show only new issues created after git revision `REV`. + new-from-rev: HEAD # Show only new issues created in git patch with set file path. new-from-patch: path/to/patch/file - # Fix found issues (if it's supported by the linter) + # Fix found issues (if it's supported by the linter). fix: true severity: - # Default value is empty string. - # Set the default severity for issues. If severity rules are defined and the issues - # do not match or no severity is provided to the rule this will be the default - # severity applied. Severities should match the supported severity names of the - # selected out format. + # Set the default severity for issues. + # + # If severity rules are defined and the issues do not match or no severity is provided to the rule + # this will be the default severity applied. + # Severities should match the supported severity names of the selected out format. # - Code climate: https://docs.codeclimate.com/docs/issues#issue-severity - # - Checkstyle: https://checkstyle.sourceforge.io/property_types.html#severity - # - GitHub: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-error-message + # - Checkstyle: https://checkstyle.sourceforge.io/property_types.html#severity + # - GitHub: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-error-message + # + # Default value is an empty string. default-severity: error - # The default value is false. - # If set to true severity-rules regular expressions become case sensitive. - case-sensitive: false + # If set to true `severity-rules` regular expressions become case-sensitive. + # Default: false + case-sensitive: true - # Default value is empty list. - # When a list of severity rules are provided, severity information will be added to lint - # issues. Severity rules have the same filtering capability as exclude rules except you - # are allowed to specify one matcher per severity rule. + # When a list of severity rules are provided, severity information will be added to lint issues. + # Severity rules have the same filtering capability as exclude rules + # except you are allowed to specify one matcher per severity rule. # Only affects out formats that support setting severity information. + # + # Default: [] rules: - linters: - dupl