version: "2"
linters:
  default: none
  enable:
    - asasalint
    - contextcheck
    - copyloopvar
    - decorder
    - dogsled
    - errcheck
    - errchkjson
    - ginkgolinter
    - gocheckcompilerdirectives
    - goconst
    - gocritic
    - goprintffuncname
    - govet
    - ineffassign
    - loggercheck
    - makezero
    - mirror
    - misspell
    - nakedret
    - prealloc
    - predeclared
    - staticcheck
    - unconvert
    - unparam
    - unused
    - whitespace
  settings:
    gocritic:
      enabled-checks:
        - httpNoBody
        - emptyStringTest
        - builtinShadow
        - exposedSyncMutex
      enabled-tags:
        - diagnostic
      disabled-tags:
        - performance
        - style
        - experimental
        - opinionated
  exclusions:
    generated: lax
    presets:
      - comments
      - common-false-positives
      - legacy
      - std-error-handling
    paths:
      - third_party$
      - builtin$
      - examples$
      - internal/e2e/testdata/immich-server
      - "_test\\.go$"
issues:
  max-issues-per-linter: 100
  max-same-issues: 100
formatters:
  enable:
    - gci
    - gofmt
    - gofumpt
    - goimports
  exclusions:
    generated: lax
    paths:
      - third_party$
      - builtin$
      - examples$
      - internal/e2e/testdata/immich-server
