version: "2"
run:
  concurrency: 4
  go: "1.22"
  build-tags:
    - mytag
  modules-download-mode: readonly
  issues-exit-code: 2
  tests: false
  allow-parallel-runners: true
  allow-serial-runners: true
output:
  formats:
    text:
      path: stdout
      print-linter-name: true
      print-issued-lines: false
  sort-order:
    - linter
    - severity
    - file
  path-prefix: ""
linters:
  default: none
  enable:
    - asasalint
    - asciicheck
    - bidichk
    - bodyclose
    - canonicalheader
    - containedctx
    - contextcheck
    - copyloopvar
    - cyclop
    - decorder
    - dogsled
    - dupl
    - dupword
    - durationcheck
    - err113
    - errcheck
    - errchkjson
    - errname
    - errorlint
    - fatcontext
    - forcetypeassert
    - funlen
    - ginkgolinter
    - gocheckcompilerdirectives
    - gochecknoinits
    - gochecksumtype
    - gocognit
    - goconst
    - gocritic
    - gocyclo
    - godot
    - godox
    - goheader
    - gomoddirectives
    - gomodguard
    - goprintffuncname
    - gosec
    - gosmopolitan
    - govet
    - grouper
    - importas
    - inamedparam
    - ineffassign
    - interfacebloat
    - intrange
    - ireturn
    - loggercheck
    - maintidx
    - makezero
    - mirror
    - misspell
    - mnd
    - musttag
    - nakedret
    - nestif
    - nilerr
    - nilnil
    - nlreturn
    - noctx
    - nolintlint
    - nonamedreturns
    - nosprintfhostport
    - paralleltest
    - perfsprint
    - prealloc
    - predeclared
    - promlinter
    - protogetter
    - reassign
    - revive
    - rowserrcheck
    - sloglint
    - spancheck
    - sqlclosecheck
    - staticcheck
    - tagliatelle
    - testableexamples
    - testifylint
    - testpackage
    - thelper
    - tparallel
    - unconvert
    - unparam
    - unused
    - usestdlibvars
    - varnamelen
    - wastedassign
    - whitespace
    - wrapcheck
    - wsl
    - zerologlint
  settings:
    cyclop:
      max-complexity: 20
    funlen:
      lines: 80
      statements: 50
      ignore-comments: true
    gocognit:
      min-complexity: 20
    gocyclo:
      min-complexity: 20
    godot:
      scope: all
      exclude:
        - '^fixme:'
        - '^todo:'
      capital: true
      period: false
    gosec:
      excludes:
        - G115
    revive:
      rules:
        - name: unexported-return
          disabled: true
    varnamelen:
      max-distance: 6
      min-name-length: 2
      ignore-names:
        - err
      ignore-type-assert-ok: true
      ignore-map-index-ok: true
      ignore-chan-recv-ok: true
  exclusions:
    generated: lax
    presets:
      - comments
      - common-false-positives
      - legacy
      - std-error-handling
    rules:
      - linters:
          - cyclop
        path: (.+)_test\.go
    paths:
      - third_party$
      - builtin$
      - examples$
formatters:
  enable:
    - gci
    - gofmt
    - gofumpt
    - goimports
  settings:
    goimports:
      local-prefixes:
        - git.mousesoft.ru/ms/config
  exclusions:
    generated: lax
    paths:
      - third_party$
      - builtin$
      - examples$