version: "2"
run:
  allow-parallel-runners: true
linters:
  default: none
  enable:
    - asasalint
    - asciicheck
    - bidichk
    - bodyclose
    - contextcheck
    - decorder
    - dogsled
    - dupl
    - durationcheck
    - errcheck
    - errchkjson
    - errname
    - ginkgolinter
    - gocheckcompilerdirectives
    - goconst
    - gocritic
    - gocyclo
    - godox
    - goheader
    - gomoddirectives
    - gomodguard
    - goprintffuncname
    - gosec
    - govet
    - grouper
    - importas
    - ineffassign
    - loggercheck
    - makezero
    - misspell
    - musttag
    - nakedret
    - nolintlint
    - nosprintfhostport
    - prealloc
    - predeclared
    - promlinter
    - reassign
    - revive
    - rowserrcheck
    - sqlclosecheck
    - staticcheck
    - testableexamples
    - unconvert
    - unparam
    - unused
    - usestdlibvars
    - whitespace
  settings:
    errcheck:
      check-type-assertions: true
      check-blank: true
    gocritic:
      enabled-checks:
        - appendAssign
        - argOrder
        - badCall
        - badCond
        - badLock
        - badRegexp
        - badSorting
        - builtinShadowDecl
        - caseOrder
        - codegenComment
        - commentedOutCode
        - deferInLoop
        - deprecatedComment
        - dupArg
        - dupBranchBody
        - dupCase
        - dupSubExpr
        - dynamicFmtString
        - emptyDecl
        - evalOrder
        - exitAfterDefer
        - externalErrorReassign
        - filepathJoin
        - flagDeref
        - flagName
        - mapKey
        - nilValReturn
        - offBy1
        - regexpPattern
        - returnAfterHttpError
        - sloppyReassign
        - sloppyTypeAssert
        - sortSlice
        - sprintfQuotedString
        - sqlQuery
        - syncMapLoadAndDelete
        - truncateCmp
        - unnecessaryDefer
        - weakCond
        - appendCombine
        - equalFold
        - hugeParam
        - indexAlloc
        - preferDecodeRune
        - preferFprint
        - preferStringWriter
        - preferWriteByte
        - rangeExprCopy
        - rangeValCopy
        - sliceClear
        - stringXbytes
        - assignOp
        - boolExprSimplify
        - captLocal
        - commentFormatting
        - commentedOutImport
        - defaultCaseOrder
        - deferUnlambda
        - docStub
        - dupImport
        - elseif
        - emptyFallthrough
        - emptyStringTest
        - exposedSyncMutex
        - hexLiteral
        - httpNoBody
        - ifElseChain
        - methodExprCall
        - newDeref
        - octalLiteral
        - preferFilepathJoin
        - redundantSprint
        - regexpMust
        - regexpSimplify
        - ruleguard
        - singleCaseSwitch
        - sloppyLen
        - stringConcatSimplify
        - stringsCompare
        - switchTrue
        - timeExprSimplify
        - tooManyResultsChecker
        - typeAssertChain
        - typeDefFirst
        - typeSwitchVar
        - underef
        - unlabelStmt
        - unlambda
        - unslice
        - valSwap
        - whyNoLint
        - wrapperFunc
        - yodaStyleExpr
        - builtinShadow
        - importShadow
        - initClause
        - nestingReduce
        - paramTypeCombine
        - ptrToRefParam
        - typeUnparen
        - unnamedResult
        - unnecessaryBlock
    gocyclo:
      min-complexity: 40
    godox:
      keywords:
        - BUG
        - FIXME
        - HACK
    nolintlint:
      require-explanation: false
      require-specific: true
      allow-unused: false
  exclusions:
    generated: lax
    presets:
      - comments
      - common-false-positives
      - legacy
      - std-error-handling
    paths:
      - third_party$
      - builtin$
      - examples$
issues:
  max-issues-per-linter: 0
  max-same-issues: 0
formatters:
  enable:
    - gofmt
    - gofumpt
    - goimports
  exclusions:
    generated: lax
    paths:
      - third_party$
      - builtin$
      - examples$
