version: "2" # Config schema uses the golangci-lint v2 layout (settings live under # linters.settings, not top-level linters-settings) so that the # thresholds below are actually applied by golangci-lint >= v2. run: timeout: 5m modules-download-mode: readonly linters: default: all disable: # Genuinely incompatible with project patterns - exhaustruct # Requires all struct fields - godot # Requires comments to end with periods - wsl # Deprecated, replaced by wsl_v5 - wrapcheck # Too verbose for internal packages - varnamelen # Short names like db, id are idiomatic Go settings: lll: line-length: 88 funlen: lines: 80 statements: 50 cyclop: max-complexity: 15 dupl: threshold: 100 depguard: # Test-support code must not be compiled into the shipped binary. A # test-support package exists to hand a test privileges the program # itself must never have, so a file that is not a test must not import # one. Test files, and the files inside a package whose directory name # ends in `test`, are where that code belongs, and are exempt. # # The deny list below is the one part of this file a repository is # expected to extend, and the only part it may. depguard matches an # import path against a list of prefixes, so it cannot be told "any path # whose last segment ends in test"; a repository's own test-support # packages have to be named here one at a time, by full import path, # under a module path that differs from repository to repository. Add # them; change nothing else. rules: test-support: list-mode: lax files: - "$all" - "!$test" - "!**/*test/**" deny: - pkg: net/http/httptest desc: >- Test-support code belongs in test files and in packages whose directory name ends in test, not in the shipped binary. issues: max-issues-per-linter: 0 max-same-issues: 0