# Defines the configuration version. # The only possible value is "2". version: "2" linters: # Default set of linters. # The value can be: `standard`, `all`, `none`, or `fast`. # Default: standard default: all # Enable specific linter. # https://golangci-lint.run/usage/linters/#enabled-by-default enable: - asasalint - asciicheck - bidichk - bodyclose - canonicalheader - containedctx - contextcheck - copyloopvar - cyclop - decorder - depguard - dogsled - dupl - dupword - durationcheck - err113 - errcheck - errchkjson - errname - errorlint - exhaustive - exhaustruct - exptostd - fatcontext - forbidigo - forcetypeassert - funlen - ginkgolinter - gocheckcompilerdirectives - gochecknoglobals - gochecknoinits - gochecksumtype - gocognit - goconst - gocritic - gocyclo - godot - godox - goheader - gomoddirectives - gomodguard - goprintffuncname - gosec - gosmopolitan - govet - grouper - iface - importas - inamedparam - ineffassign - interfacebloat - intrange - ireturn - lll - loggercheck - maintidx - makezero - mirror - misspell - mnd - musttag - nakedret - nestif - nilerr - nilnesserr - nilnil - nlreturn - noctx - nolintlint - nonamedreturns - nosprintfhostport - paralleltest - perfsprint - prealloc - predeclared - promlinter - protogetter - reassign - recvcheck - revive - rowserrcheck - sloglint - spancheck - sqlclosecheck - staticcheck - tagalign - tagliatelle - testableexamples - testifylint - testpackage - thelper - tparallel - unconvert - unparam - unused - usestdlibvars - usetesting - varnamelen - wastedassign - whitespace - wrapcheck - wsl - zerologlint - misspell - mnd - funlen - goconst - gocritic - gocyclo - gosec - govet - unparam - unused - errname - reassign # Disable specific linter # https://golangci-lint.run/usage/linters/#disabled-by-default disable: - varnamelen - asasalint - asciicheck - bidichk - bodyclose - canonicalheader - containedctx - contextcheck - copyloopvar - cyclop - decorder - depguard - dogsled - dupl - dupword - durationcheck - err113 - errcheck - errchkjson - errorlint - exhaustive - exhaustruct - exptostd - fatcontext - forbidigo - forcetypeassert - ginkgolinter - gocheckcompilerdirectives - gochecknoglobals - gochecknoinits - gochecksumtype - gocognit - godot - godox - gosmopolitan - goheader - gomoddirectives - gomodguard - goprintffuncname - grouper - iface - importas - inamedparam - ineffassign - interfacebloat - intrange - ireturn - lll - loggercheck - maintidx - makezero - mirror - musttag - nakedret - nestif - nilerr - nilnesserr - nilnil - nlreturn - noctx - nolintlint - nonamedreturns - nosprintfhostport - paralleltest - perfsprint - prealloc - predeclared - promlinter - protogetter - reassign - recvcheck - revive - rowserrcheck - sloglint - spancheck - sqlclosecheck - staticcheck - tagalign - tagliatelle - testableexamples - testifylint - testpackage - thelper - tparallel - unconvert - usestdlibvars - usetesting - wastedassign - whitespace - wrapcheck - wsl - zerologlint # All available settings of specific linters. settings: # See the dedicated "linters.settings" documentation section. govet: enable-all: true # Defines a set of rules to ignore issues. # It does not skip the analysis, and so does not ignore "typecheck" errors. exclusions: # Mode of the generated files analysis. # # - `strict`: sources are excluded by strictly following the Go generated file convention. # Source files that have lines matching only the following regular expression will be excluded: `^// Code generated .* DO NOT EDIT\.$` # This line must appear before the first non-comment, non-blank text in the file. # https://go.dev/s/generatedcode # - `lax`: sources are excluded if they contain lines like `autogenerated file`, `code generated`, `do not edit`, etc. # - `disable`: disable the generated files exclusion. # # Default: lax generated: strict # Log a warning if an exclusion rule is unused. # Default: false warn-unused: true # Predefined exclusion rules. # Default: [] presets: - comments - std-error-handling - common-false-positives - legacy # Excluding configuration per-path, per-linter, per-text and per-source. # rules: # # Exclude some linters from running on tests files. # - path: _test\.go # linters: # - gocyclo # - errcheck # - dupl # - gosec # # Run some linter only for test files by excluding its issues for everything else. # - path-except: _test\.go # linters: # - forbidigo # # Exclude known linters from partially hard-vendored code, # # which is impossible to exclude via `nolint` comments. # # `/` will be replaced by the current OS file path separator to properly work on Windows. # - path: internal/hmac/ # text: "weak cryptographic primitive" # linters: # - gosec # # Exclude some `staticcheck` messages. # - linters: # - staticcheck # text: "SA9003:" # # Exclude `lll` issues for long lines with `go:generate`. # - linters: # - lll # source: "^//go:generate " # # Which file paths to exclude: they will be analyzed, but issues from them won't be reported. # # "/" will be replaced by the current OS file path separator to properly work on Windows. # # Default: [] # paths: # - ".*\\.my\\.go$" # - lib/bad.go # # Which file paths to not exclude. # # Default: [] # paths-except: # - ".*\\.my\\.go$" # - lib/bad.go formatters: # Enable specific formatter. # Default: [] (uses standard Go formatting) enable: - gci - gofmt - gofumpt - goimports - golines # Formatters settings. # settings: # # See the dedicated "formatters.settings" documentation section. # option: value # exclusions: # # Mode of the generated files analysis. # # # # - `strict`: sources are excluded by strictly following the Go generated file convention. # # Source files that have lines matching only the following regular expression will be excluded: `^// Code generated .* DO NOT EDIT\.$` # # This line must appear before the first non-comment, non-blank text in the file. # # https://go.dev/s/generatedcode # # - `lax`: sources are excluded if they contain lines like `autogenerated file`, `code generated`, `do not edit`, etc. # # - `disable`: disable the generated files exclusion. # # # # Default: lax # generated: strict # # Which file paths to exclude. # # Default: [] # paths: # - ".*\\.my\\.go$" # - lib/bad.go # Options for analysis running. run: # Timeout for total work, e.g. 30s, 5m, 5m30s. # If the value is lower or equal to 0, the timeout is disabled. # Default: 0 (disabled) timeout: 5m # The mode used to evaluate relative paths. # It's used by exclusions, Go plugins, and some linters. # The value can be: # - `gomod`: the paths will be relative to the directory of the `go.mod` file. # - `gitroot`: the paths will be relative to the git root (the parent directory of `.git`). # - `cfg`: the paths will be relative to the configuration file. # - `wd` (NOT recommended): the paths will be relative to the place where golangci-lint is run. # Default: cfg relative-path-mode: gomod # Exit code when at least one issue was found. # Default: 1 issues-exit-code: 2 # Include test files or not. # Default: true tests: false # # List of build tags, all linters use it. # # Default: [] # build-tags: # - mytag # 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 # not need updates, such as in a continuous integration and testing system. # If invoked with -mod=vendor, the go command assumes that the vendor # directory holds the correct copies of dependencies and ignores # the dependency descriptions in go.mod. # # Allowed values: readonly|vendor|mod # Default: "" modules-download-mode: readonly # Allow multiple parallel golangci-lint instances running. # If false, golangci-lint acquires file lock on start. # Default: false allow-parallel-runners: true # Allow multiple golangci-lint instances running, but serialize them around a lock. # If false, golangci-lint exits with an error if it fails to acquire file lock on start. # Default: false allow-serial-runners: true # Define the Go version limit. # Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.22. go: '1.23' # Number of operating system threads (`GOMAXPROCS`) that can execute golangci-lint simultaneously. # Default: 0 (automatically set to match Linux container CPU quota and # fall back to the number of logical CPUs in the machine) concurrency: 4