# This file contains all available configuration options
# with their default values (in comments).
#
# This file is not a configuration example,
# it contains the exhaustive configuration with explanations of the options.

issues:
  # Which files to exclude: they will be analyzed, but issues from them won't be reported.
  # There is no need to include all autogenerated files,
  # we confidently recognize autogenerated files.
  # If it's not, please let us know.
  # "/" will be replaced by current OS file path separator to properly work on Windows.
  # Default: []
  exclude-files:
    - ".*_ssz\\.go$"

# Options for analysis running.
run:
  # The default concurrency value is the number of available CPU.
  # concurrency: 4

  # Timeout for analysis, e.g. 30s, 5m.
  # Default: 1m
  timeout: 10m

  # Exit code when at least one issue was found.
  # Default: 1
  # issues-exit-code: 2

  # Include test files or not.
  # Default: true
  tests: false

  # List of build tags, all linters use it.
  # Default: [].
  # build-tags:
  #   - mytag

  # Which dirs to skip: issues from them won't be reported.
  # Can use regexp here: `generated.*`, regexp is applied on full path.
  # Default value is empty list,
  # but default dirs are skipped independently of this option's value (see skip-dirs-use-default).
  # "/" will be replaced by current OS file path separator to properly work on Windows.
  # skip-dirs:
  #   - autogenerated_by_my_lib

  # Enables skipping of directories:
  # - vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
  # Default: true
  # skip-dirs-use-default: false

  # If set we pass it to "go list -mod={option}". From "go help modules":
  # If invoked with -mod=readonly, the go command is disallowed from the implicit
  # automatic updating of go.mod described above. Instead, it fails when any changes
  # to go.mod are needed. This setting is most useful to check that go.mod does
  # not need updates, such as in a continuous integration and testing system.
  # If invoked with -mod=vendor, the go command assumes that the vendor
  # directory holds the correct copies of dependencies and ignores
  # the dependency descriptions in go.mod.
  #
  # Allowed values: readonly|vendor|mod
  # By default, it isn't set.
  modules-download-mode: readonly

  # Allow multiple parallel golangci-lint instances running.
  # If false (default) - golangci-lint acquires file lock on start.
  allow-parallel-runners: true

  # Define the Go version limit.
  # Mainly related to generics support since go1.18.
  # Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.18
  # go: '1.19'


# output configuration options
output:
  formats:
    - format: colored-line-number
      path: stderr

# All available settings of specific linters.
linters-settings:
  gosec:
    excludes:
      # Flags for potentially-unsafe casting of ints, but generates a lot of false positives.
      - 'G115'

  lll:
    line-length: 132

  stylecheck:
    checks: [ "all", "-ST1000" ]

  tagliatelle:
    case:
      # use-field-name: true
      rules:
        json: snake
        yaml: snake

linters:
  # Enable all available linters.
  # Default: false
  enable-all: true
  # Disable specific linter
  # https://golangci-lint.run/usage/linters/#disabled-by-default
  disable:
    - contextcheck
    - cyclop
    - depguard
    - dupl
    - err113
    - errorlint
    - exhaustive
    - exhaustruct
    - forbidigo
    - forcetypeassert
    - funlen
    - gci
    - gochecknoglobals
    - gochecknoinits
    - gocognit
    - goconst
    - goheader
    - ireturn
    - lll
    - maintidx
    - mnd
    - musttag
    - nestif
    - nilnil
    - nlreturn
    - nolintlint
    - perfsprint
    - promlinter
    - rowserrcheck
    - sqlclosecheck
    - tenv
    - unparam
    - varnamelen
    - wastedassign
    - wrapcheck
    - wsl
