version: "2" linters: default: none enable: - asciicheck - bidichk - bodyclose - depguard - dogsled - dupl - errcheck - errname - errorlint - exhaustruct - forcetypeassert - gocognit - gocritic - gomodguard - gosec - govet - importas - ineffassign - makezero - misspell - nestif - nilnil - noctx - paralleltest - revive - staticcheck - testpackage - tparallel - unconvert - unused - usetesting settings: depguard: rules: aibridge_import_isolation: list-mode: lax files: - aibridge/*.go - aibridge/**/*.go allow: - $gostd - github.com/coder/coder/v2/aibridge - github.com/coder/coder/v2/buildinfo deny: - pkg: github.com/coder/coder/v2 desc: aibridge code must not import coder packages outside aibridge; buildinfo is the only exception dupl: threshold: 412 exhaustruct: include: - httpmw\.\w+ - github.com/coder/coder/v2/coderd/database\.[^G][^e][^t]\w+Params gocognit: min-complexity: 300 goconst: min-len: 4 min-occurrences: 3 gocritic: enabled-checks: - badLock - badRegexp - boolExprSimplify - builtinShadowDecl - commentedOutImport - deferUnlambda - dupImport - emptyFallthrough - hexLiteral - indexAlloc - initClause - methodExprCall - nilValReturn - regexpPattern - ruleguard - sortSlice - sprintfQuotedString - sqlQuery - truncateCmp - typeAssertChain - weakCond settings: ruleguard: failOn: all rules: ${base-path}/scripts/rules.go gosec: excludes: - G601 govet: disable: - loopclosure importas: no-unaliased: true misspell: locale: US ignore-rules: - trialer nestif: min-complexity: 20 revive: severity: warning rules: - name: atomic - name: bare-return - name: blank-imports - name: bool-literal-in-expr - name: call-to-gc - name: confusing-naming - name: confusing-results - name: constant-logical-expr - name: context-as-argument - name: context-keys-type - name: deep-exit - name: defer - name: dot-imports - name: duplicated-imports - name: early-return - name: empty-block - name: empty-lines - name: error-naming - name: error-return - name: error-strings - name: errorf - name: exported - name: flag-parameter - name: get-return - name: identical-branches - name: if-return - name: import-shadowing - name: increment-decrement - name: indent-error-flow - name: modifies-value-receiver - name: package-comments - name: range - name: receiver-naming - name: redefines-builtin-id - name: string-of-int - name: struct-tag - name: superfluous-else - name: time-naming - name: unconditional-recursion - name: unexported-naming - name: unexported-return - name: unhandled-error - name: unnecessary-stmt - name: unreachable-code - name: unused-parameter exclude: - "**/*_test.go" - name: unused-receiver - name: var-declaration - name: var-naming - name: waitgroup-by-value staticcheck: checks: - all - -SA1019 usetesting: context-background: false context-todo: false os-chdir: false os-mkdir-temp: false os-setenv: true os-temp-dir: false os-create-temp: false exclusions: generated: lax presets: - comments - common-false-positives - legacy - std-error-handling rules: - linters: - errcheck - exhaustruct - forcetypeassert path: _test\.go - linters: - exhaustruct path: scripts/* - linters: - ALL path: scripts/rules.go paths: - scripts/rules.go - node_modules - .git - third_party$ - builtin$ - examples$ issues: max-issues-per-linter: 0 max-same-issues: 0 fix: true formatters: enable: - goimports settings: goimports: local-prefixes: - coder.com - cdr.dev - go.coder.com - github.com/cdr - github.com/coder exclusions: generated: lax paths: - scripts/rules.go - node_modules - .git - third_party$ - builtin$ - examples$