.golangci.yaml

  1# SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
  2#
  3# SPDX-License-Identifier: CC0-1.0
  4
  5version: "2"
  6linters:
  7  default: none
  8  # Be specific
  9  enable:
 10    - arangolint
 11    - asasalint
 12    - asciicheck
 13    - bidichk
 14    - bodyclose
 15    - canonicalheader
 16    - containedctx
 17    - contextcheck
 18    - copyloopvar
 19    - cyclop
 20    - decorder
 21    - dogsled
 22    - dupl
 23    - dupword
 24    - durationcheck
 25    - embeddedstructfieldcheck
 26    - err113
 27    - errcheck
 28    - errchkjson
 29    - errname
 30    - errorlint
 31    - exhaustive
 32    - exptostd
 33    - fatcontext
 34    - forbidigo
 35    - forcetypeassert
 36    - funcorder
 37    - funlen
 38    - ginkgolinter
 39    - gocheckcompilerdirectives
 40    - gochecknoglobals
 41    - gochecknoinits
 42    - gochecksumtype
 43    - gocognit
 44    - goconst
 45    - gocritic
 46    - gocyclo
 47    - godoclint
 48    - godot
 49    - godox
 50    - goheader
 51    - gomoddirectives
 52    - gomodguard
 53    - goprintffuncname
 54    - gosec
 55    - gosmopolitan
 56    - govet
 57    - grouper
 58    - iface
 59    - importas
 60    - inamedparam
 61    - ineffassign
 62    - interfacebloat
 63    - intrange
 64    - iotamixing
 65    - ireturn
 66    - lll
 67    - loggercheck
 68    - maintidx
 69    - makezero
 70    - mirror
 71    - misspell
 72    - mnd
 73    - musttag
 74    - nakedret
 75    - nestif
 76    - nilerr
 77    - nilnesserr
 78    - nilnil
 79    - nlreturn
 80    - noctx
 81    - nolintlint
 82    - nonamedreturns
 83    - nosprintfhostport
 84    - paralleltest
 85    - perfsprint
 86    - prealloc
 87    - predeclared
 88    - promlinter
 89    - protogetter
 90    - reassign
 91    - recvcheck
 92    - revive
 93    - rowserrcheck
 94    - sloglint
 95    - spancheck
 96    - sqlclosecheck
 97    - staticcheck
 98    - tagalign
 99    - tagliatelle
100    - testableexamples
101    - testifylint
102    - testpackage
103    - thelper
104    - tparallel
105    - unconvert
106    - unparam
107    - unqueryvet
108    - unused
109    - usestdlibvars
110    - usetesting
111    - varnamelen
112    - wastedassign
113    - whitespace
114    - wrapcheck
115    - wsl_v5
116    - zerologlint
117    - prealloc
118
119  disable:
120    - depguard
121    - noinlineerr
122
123  settings:
124    tagliatelle:
125      case:
126        rules:
127          json: snake
128    varnamelen:
129      ignore-names:
130        - c   # client
131        - f   # file handle
132        - id  # entity ID
133        - ok  # boolean check
134        - db  # database
135        - tx  # transaction
136        - fn  # function
137
138  exclusions:
139    rules:
140      - path: cmd/
141        linters:
142          - gochecknoglobals  # Cobra commands are package-level vars
143          - gochecknoinits    # Cobra uses init() for flag registration
144          - errcheck          # Stub implementations print without checking
145          - godox             # TODOs are intentional placeholders
146          - wrapcheck         # CLI returns errors for display, wrapping adds noise
147          - mnd               # Magic numbers in cobra.ExactArgs are clear in context
148          - dupl              # Builder types differ but share method signatures
149      - path: cmd/
150        text: unused-parameter  # Cobra callback signatures can't be changed
151      - path: internal/mcp/
152        linters:
153          - nilerr              # MCP handlers return errors in result, not as Go error
154      - path: internal/ui/
155        linters:
156          - gochecknoglobals  # Style constants are package-level vars
157          - ireturn           # Generic spinner helper uses type params
158      - path: internal/config/
159        text: "0o700"           # Config directory permissions are intentional