linters-settings:
  govet:
    check-shadowing: true
  funlen:
    lines: 100
    statements: 60
  forbidigo:
    forbid:
    - time.Now # use clock.Now
    - time.Since # use clock.Since
    - time.Until # use clock.Until
  gocognit:
    min-complexity: 40
  gocyclo:
    min-complexity: 15
  cyclop:
    max-complexity: 20
    skip-tests: true
  maligned:
    suggest-new: true
  goconst:
    min-len: 5
    min-occurrences: 3
  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
  misspell:
    locale: US
  lll:
    line-length: 256
  goimports:
    local-prefixes: github.com/kopia/kopia
  gocritic:
    settings:
      hugeParam:
        # size in bytes that makes the warning trigger (default 80)
        sizeThreshold: 160
    enabled-tags:
      - diagnostic
      - performance
      - style
      - opinionated
      - experimental
    disabled-checks:
      - wrapperFunc
      - whyNoLint
linters:
  enable-all: true
  disable:
    - maligned
    - prealloc
    - gochecknoglobals
    - gochecknoinits
    - whitespace
    - nlreturn
    - testpackage
    - ifshort
    - exhaustivestruct
    - paralleltest
    - tparallel

run:
  skip-dirs:
    - test/testdata_etc

issues:
  exclude-use-default: false
  exclude-rules:
    - path: _test\.go|testing|tests|test_env|fshasher
      linters:
      - gomnd
      - gocognit
      - funlen
      - errcheck
      - gosec
      - nestif
      - wrapcheck
      - nolintlint
    - text: "Magic number: 1e"
      linters:
      - gomnd
    - text: "unnecessaryDefer"
      linters:
      - gocritic
    - text: "filepathJoin"
      linters:
      - gocritic
    - text: "weak cryptographic primitive"
      linters:
        - gosec
    - text: "lines are duplicate of"
      linters:
        - dupl
    - text: "Line contains TODO"
      linters:
        - godox 
    - text: ".*Magic number\\: [01],"
      linters:
        - gomnd
    - text: "Errors unhandled"
      linters:
        - gosec
    - path: cli
      linters:
      - gochecknoglobals
