# This file contains all available configuration options
# with their default values.

# options for analysis running
run:
  # timeout for analysis, e.g. 30s, 5m, default is 1m
  timeout: 20m

  # include test files or not, default is true
  tests: false

# output configuration options
output:
  # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number"
  formats:
    - format: tab

# all available settings of specific linters
linters-settings:
  exhaustive:
    # indicates that switch statements are to be considered exhaustive if a
    # 'default' case is present, even if all enum members aren't listed in the
    # switch
    default-signifies-exhaustive: true
  govet:
    # report about shadowed variables
    check-shadowing: false
  staticcheck:
    checks: ["all", "-SA1019"] # TODO Enable SA1019 after deprecated warning are fixed.
  funlen:
    lines: 80 # default 60
    statements: 60 # default 40
  gocognit:
    min-complexity: 40 # default 30
  importas:
    no-unaliased: true
    no-extra-aliases: false
    alias:
      pkg: git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object
      alias: objectSDK
  unused:
    field-writes-are-uses: false
    exported-fields-are-used: false
    local-variables-are-used: false
  custom:
    truecloudlab-linters:
      path: bin/linters/external_linters.so
      original-url: git.frostfs.info/TrueCloudLab/linters.git
      settings:
        noliteral:
          target-methods : ["reportFlushError", "reportError"]
          disable-packages: ["codes", "err", "res","exec"]
          constants-package: "git.frostfs.info/TrueCloudLab/frostfs-node/internal/logs"

linters:
  enable:
    # mandatory linters
    - govet
    - revive

    # some default golangci-lint linters
    - errcheck
    - gosimple
    - godot
    - ineffassign
    - staticcheck
    - typecheck
    - unused

    # extra linters
    - bidichk
    - durationcheck
    - exhaustive
    - copyloopvar
    - gofmt
    - goimports
    - misspell
    - predeclared
    - reassign
    - whitespace
    - containedctx
    - funlen
    - gocognit
    - contextcheck
    - importas
    - truecloudlab-linters
    - perfsprint
    - testifylint
    - protogetter
    - intrange
    - tenv
  disable-all: true
  fast: false