diff --git a/.golangci.yml b/.golangci.yml index 4d3a8480c..a3b6da383 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,144 +1,151 @@ -# golangci-lint configuration options +version: "2" linters: + default: none enable: - errcheck - - goimports - - revive - - ineffassign - - govet - - unconvert - - staticcheck - - gosimple - - stylecheck - - unused - - misspell - gocritic + - govet + - ineffassign + - misspell + - revive + - staticcheck + - unconvert + - unused #- prealloc - #- maligned - disable-all: true + settings: + staticcheck: + # Enable all default checks performed by the staticcheck stand-alone tool + # (see https://staticcheck.io/docs/configuration/options/#checks), with + # some exceptions/additions (commented). + checks: + - all + - -ST1000 + - -ST1003 + - -ST1016 + - -ST1020 + - -ST1021 + - -ST1022 + - -ST1023 # Not enabled by default + gocritic: + # Enable all default checks with some exceptions/additions (commented). + # Cannot use both enabled-checks and disabled-checks, so must specify all + # to be used. + disable-all: true + enabled-checks: + #- appendAssign # Enabled by default + - argOrder + - assignOp + - badCall + - badCond + #- captLocal # Enabled by default + - caseOrder + - codegenComment + #- commentFormatting # Enabled by default + - defaultCaseOrder + - deprecatedComment + - dupArg + - dupBranchBody + - dupCase + - dupSubExpr + - elseif + #- exitAfterDefer # Enabled by default + - flagDeref + - flagName + #- ifElseChain # Enabled by default + - mapKey + - newDeref + - offBy1 + - regexpMust + - ruleguard # Not enabled by default + #- singleCaseSwitch # Enabled by default + - sloppyLen + - sloppyTypeAssert + - switchTrue + - typeSwitchVar + - underef + - unlambda + - unslice + - valSwap + - wrapperFunc + settings: + ruleguard: + rules: ${base-path}/bin/rules.go + revive: + # Disable some of the default rules which produces a lot of issues currently. + # Since setting any rule disable all others, we must re-enable them. + rules: + - name: blank-imports + disabled: false + - name: context-as-argument + disabled: false + - name: context-keys-type + disabled: false + - name: dot-imports + disabled: false + - name: empty-block + disabled: true + - name: error-naming + disabled: false + - name: error-return + disabled: false + - name: error-strings + disabled: false + - name: errorf + disabled: false + - name: exported + disabled: false + - name: if-return + disabled: true + - name: increment-decrement + disabled: true + - name: indent-error-flow + disabled: false + - name: package-comments + disabled: false + - name: range + disabled: false + - name: receiver-naming + disabled: false + - name: redefines-builtin-id + disabled: true + - name: superfluous-else + disabled: true + - name: time-naming + disabled: false + - name: unexported-return + disabled: false + - name: unreachable-code + disabled: true + - name: unused-parameter + disabled: true + - name: var-declaration + disabled: false + - name: var-naming + disabled: false + exclusions: + # Exclude sources that contain lines like `autogenerated file`, + # `code generated`, `do not edit`, etc. This is what golangci-lint v1 did, + # while in v2 the default is to strictly following the Go generated file + # convention. + generated: lax + rules: + - linters: + - staticcheck + text: 'SA1019: "github.com/rclone/rclone/cmd/serve/httplib" is deprecated' + +formatters: + enable: + - goimports + exclusions: + generated: lax issues: - # Enable some lints excluded by default - exclude-use-default: false - # Maximum issues count per one linter. Set to 0 to disable. Default is 50. max-issues-per-linter: 0 - # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. max-same-issues: 0 - exclude-rules: - - - linters: - - staticcheck - text: 'SA1019: "github.com/rclone/rclone/cmd/serve/httplib" is deprecated' - - # don't disable the revive messages about comments on exported functions - include: - - EXC0012 - - EXC0013 - - EXC0014 - - EXC0015 - run: - # timeout for analysis, e.g. 30s, 5m, default is 1m + # Timeout for total work, e.g. 30s, 5m, 5m30s. Default is 0 (disabled). timeout: 10m - -linters-settings: - revive: - # setting rules seems to disable all the rules, so re-enable them here - rules: - - name: blank-imports - disabled: false - - name: context-as-argument - disabled: false - - name: context-keys-type - disabled: false - - name: dot-imports - disabled: false - - name: empty-block - disabled: true - - name: error-naming - disabled: false - - name: error-return - disabled: false - - name: error-strings - disabled: false - - name: errorf - disabled: false - - name: exported - disabled: false - - name: increment-decrement - disabled: true - - name: indent-error-flow - disabled: false - - name: package-comments - disabled: false - - name: range - disabled: false - - name: receiver-naming - disabled: false - - name: redefines-builtin-id - disabled: true - - name: superfluous-else - disabled: true - - name: time-naming - disabled: false - - name: unexported-return - disabled: false - - name: unreachable-code - disabled: true - - name: unused-parameter - disabled: true - - name: var-declaration - disabled: false - - name: var-naming - disabled: false - stylecheck: - # Only enable the checks performed by the staticcheck stand-alone tool, - # as documented here: https://staticcheck.io/docs/configuration/options/#checks - checks: ["all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022", "-ST1023"] - gocritic: - # Enable all default checks with some exceptions and some additions (commented). - # Cannot use both enabled-checks and disabled-checks, so must specify all to be used. - disable-all: true - enabled-checks: - #- appendAssign # Enabled by default - - argOrder - - assignOp - - badCall - - badCond - #- captLocal # Enabled by default - - caseOrder - - codegenComment - #- commentFormatting # Enabled by default - - defaultCaseOrder - - deprecatedComment - - dupArg - - dupBranchBody - - dupCase - - dupSubExpr - - elseif - #- exitAfterDefer # Enabled by default - - flagDeref - - flagName - #- ifElseChain # Enabled by default - - mapKey - - newDeref - - offBy1 - - regexpMust - - ruleguard # Not enabled by default - #- singleCaseSwitch # Enabled by default - - sloppyLen - - sloppyTypeAssert - - switchTrue - - typeSwitchVar - - underef - - unlambda - - unslice - - valSwap - - wrapperFunc - settings: - ruleguard: - rules: "${configDir}/bin/rules.go"