# golangci-lint Configuration # https://golangci-lint.run/usage/configuration/ run: timeout: 5m issues-exit-code: 1 tests: true modules-download-mode: readonly output: formats: - format: colored-line-number print-issued-lines: true print-linter-name: true sort-results: true linters: enable: # Default linters - errcheck - gosimple - govet - ineffassign - staticcheck - unused # Additional recommended linters - bodyclose - contextcheck - dupl - durationcheck - errorlint - exhaustive - exportloopref - gocognit - goconst - gocritic - gocyclo - godot - gofmt - goimports - gosec - misspell - nilerr - nilnil - noctx - prealloc - predeclared - revive - sqlclosecheck - stylecheck - tenv - tparallel - unconvert - unparam - whitespace linters-settings: errcheck: check-type-assertions: true check-blank: true govet: enable-all: true gocyclo: min-complexity: 15 gocognit: min-complexity: 20 dupl: threshold: 100 goconst: min-len: 3 min-occurrences: 3 misspell: locale: US revive: rules: - name: blank-imports - name: context-as-argument - name: context-keys-type - name: dot-imports - name: error-return - name: error-strings - name: error-naming - name: exported - name: increment-decrement - name: var-naming - name: var-declaration - name: package-comments - name: range - name: receiver-naming - name: time-naming - name: unexported-return - name: indent-error-flow - name: errorf - name: empty-block - name: superfluous-else - name: unreachable-code gosec: excludes: - G104 # Audit errors not checked - G304 # File path provided as taint input issues: exclude-rules: # Exclude some linters from running on tests files - path: _test\.go linters: - dupl - gocyclo - gocognit - gosec - errcheck # Exclude known issues in generated files - path: ".*_generated\\.go" linters: - all max-issues-per-linter: 50 max-same-issues: 10 new: false