From 57e8d9cdd24425158cc8324d711253934dc720c1 Mon Sep 17 00:00:00 2001 From: Roy Lee Date: Tue, 24 May 2022 10:05:11 -0700 Subject: [PATCH] [lbry] ci: update golangci settings --- .golangci.yml | 188 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 143 insertions(+), 45 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 4c7f466..a32e626 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,54 +1,152 @@ -run: - # timeout for analysis - deadline: 10m - linters-settings: + depguard: + list-type: blacklist + packages: + # logging is allowed only by logutils.Log, logrus + # is allowed to use only in logutils package + - github.com/sirupsen/logrus + packages-with-error-message: + - github.com/sirupsen/logrus: "logging is allowed only by logutils.Log" + dupl: + threshold: 100 + funlen: + lines: 100 + statements: 50 + gci: + local-prefixes: github.com/golangci/golangci-lint + goconst: + min-len: 2 + min-occurrences: 2 + gocritic: + enabled-tags: + - diagnostic + - experimental + - opinionated + - performance + - style + disabled-checks: + - dupImport # https://github.com/go-critic/go-critic/issues/845 + - ifElseChain + - octalLiteral + - whyNoLint + - wrapperFunc + gocyclo: + min-complexity: 15 + goimports: + local-prefixes: github.com/golangci/golangci-lint + gomnd: + settings: + mnd: + # don't include the "operation" and "assign" + checks: + - argument + - case + - condition + - return govet: - # Don't report about shadowed variables - check-shadowing: false - gofmt: - # simplify code: gofmt with `-s` option, true by default - simplify: true + check-shadowing: true + settings: + printf: + 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 + lll: + line-length: 140 + maligned: + suggest-new: true + misspell: + locale: US + nolintlint: + allow-leading-space: true # don't require machine-readable nolint directives (i.e. with no leading space) + allow-unused: false # report any unused nolint directives + require-explanation: false # don't require an explanation for nolint directives + require-specific: false # don't require nolint directives to be specific about which linter is being skipped linters: - enable-all: true - disable: - # Global variables are used in many places throughout the code base. - - gochecknoglobals - - # Some lines are over 80 characters on purpose and we don't want to make them - # even longer by marking them as 'nolint'. - - lll - - # We don't care (enough) about misaligned structs to lint that. - - maligned - - # We have long functions, especially in tests. Moving or renaming those would - # trigger funlen problems that we may not want to solve at that time. - - funlen - - # Disable for now as we haven't yet tuned the sensitivity to our codebase - # yet. Enabling by default for example, would also force new contributors to - # potentially extensively refactor code, when they want to smaller change to - # land. - - gocyclo - - # Instances of table driven tests that don't pre-allocate shouldn't trigger - # the linter. - - prealloc - - # Init functions are used by loggers throughout the codebase. - - gochecknoinits - - # Explicit types are okay. - - interfacer + disable-all: true + enable: + - asciicheck + - bodyclose + # - deadcode + - depguard + # - dogsled + # - dupl + # - errcheck + # - exhaustive + - exportloopref + # - funlen + # - gochecknoglobals + # - gochecknoinits + # - gocognit + # - goconst + # - gocritic + # - gocyclo + # - godot + # - godox + # - goerr113 + - gofmt + - goimports + # - gomnd + - goprintffuncname + # - gosec + # - gosimple + # - govet + # - ineffassign + # - interfacer + # - lll + # - maligned + # - misspell + - nakedret + # - nestif + # - noctx + # - nolintlint + # - prealloc + - rowserrcheck + # - revive + # - scopelint + # - staticcheck + # - structcheck + # - stylecheck + # - testpackage + # - typecheck + - unconvert + # - unparam + # - unused + # - varcheck + # - whitespace + # - wsl issues: + # Excluding configuration per-path, per-linter, per-text and per-source exclude-rules: - # Exclude gosec from running for tests so that tests with weak randomness - # (math/rand) will pass the linter. - path: _test\.go linters: - - gosec - - errcheck - - dupl + - gomnd + + - path: pkg/golinters/errcheck.go + text: "SA1019: errCfg.Exclude is deprecated: use ExcludeFunctions instead" + - path: pkg/commands/run.go + text: "SA1019: lsc.Errcheck.Exclude is deprecated: use ExcludeFunctions instead" + + # TODO must be removed after the release of the next version (v1.41.0) + - path: pkg/commands/run.go + linters: + - gomnd + # TODO must be removed after the release of the next version (v1.41.0) + - path: pkg/golinters/nolintlint/nolintlint.go + linters: + - gomnd + # TODO must be removed after the release of the next version (v1.41.0) + - path: pkg/printers/tab.go + linters: + - gomnd + + +run: + skip-dirs: + - test/testdata_etc + - internal/cache + - internal/renameio + - internal/robustio