run:
  timeout: 3m
  # Exit code when at least one issue was found.
  # Default: 1
  issues-exit-code: 2
  # Include test files or not.
  # Default: true
  tests: false

# Reference URL: https://golangci-lint.run/usage/linters/
linters:
  # Disable everything by default so upgrades to not include new - default
  # enabled-  linters.
  disable-all: true
  # Specifically enable linters we want to use.
  enable:
    #    - depguard
    - errcheck
    #    - godot
    - gofmt
    - goimports
    - gosimple
    - govet
    - ineffassign
    - misspell
    - revive
    - typecheck
    - unused
    - asasalint
    - asciicheck
    - bidichk
    - bodyclose
    - contextcheck
    - wastedassign
    - whitespace
    - thelper
    - tparallel
    - unconvert
    - unparam
    - usestdlibvars
    - tenv
    - testableexamples
    - stylecheck
    - sqlclosecheck
    - nosprintfhostport
    - paralleltest
    - prealloc
    - predeclared
    - promlinter
    - reassign
    - rowserrcheck
    - nakedret
    - nestif
    - nilerr
    - nilnil
    - nlreturn
    - noctx
    - nolintlint
    - nonamedreturns
    - decorder
    - dogsled
    - dupword
    - durationcheck
    - errchkjson
    - errname
    - errorlint
    # - execinquery
    - exhaustive
    - exportloopref
    - forbidigo
    - forcetypeassert
    - gochecknoinits
    - gocognit
    - goconst
    - gocritic
    - gocyclo
    - goheader
    - gomoddirectives
    - goprintffuncname
    - gosec
    - grouper
    - importas
    - interfacebloat
    - lll
    - loggercheck
    - maintidx
    - makezero

issues:
  exclude-rules:
    - path: _test\.go
      linters:
        - funlen
        - goconst
        - interfacer
        - dupl
        - lll
        - goerr113
        - errcheck
        - gocritic
        - cyclop
        - wrapcheck
        - gocognit
        - contextcheck

  exclude-dirs:
    - internal/module/seckill/usecase
#    - internal/logic

  exclude-files:
    - .*_test.go



linters-settings:
  gci:
    sections:
      - standard # Standard section: captures all standard packages.
      - default # Default section: contains all imports that could not be matched to another section type.
  gocognit:
    # Minimal code complexity to report.
    # Default: 30 (but we recommend 10-20)
    min-complexity: 40
  nestif:
    # Minimal complexity of if statements to report.
    # Default: 5
    min-complexity: 10
  lll:
    # Max line length, lines longer will be reported.
    # '\t' is counted as 1 character by default, and can be changed with the tab-width option.
    # Default: 120.
    line-length: 200
    # Tab width in spaces.
    # Default: 1
    tab-width: 1