linters:
  disable-all: true
  enable:
    - gofmt
    - govet
    - goimports
    - misspell
    - goconst
    - golint
    - errcheck
    - gosec
    - unconvert
    - staticcheck
    - varcheck
    - structcheck
    - deadcode
    - scopelint

# We don't want to skip builtin/
skip-dirs-use-default: false
skip-dirs:
  - vendor$
  - testdata$
  - examples$

issues:
  exclude:
    - "by other packages, and that stutters; consider calling this"
    - "Potential file inclusion via variable"
    - "should have( a package)? comment"
    - "Error return value of `logging.SetLogLevel` is not checked"
    - "comment on exported"
    - "(func|method) \\w+ should be \\w+"
    - "(type|var|struct field|(method|func) parameter) `\\w+` should be `\\w+`"
    - "(G306|G301|G307|G108|G302|G204|G104)"
    - "don't use ALL_CAPS in Go names"
    - "string .* has .* occurrences, make it a constant"
    - "a blank import should be only in a main or test package, or have a comment justifying it"
    - "package comment should be of the form"
    - "Potential hardcoded credentials"
    - "Use of weak random number generator"
    - "xerrors.* is deprecated"

  exclude-use-default: false
  exclude-rules:

    - path: node/modules/lp2p
      linters:
        - golint

    - path: build/params_.*\.go
      linters:
        - golint

    - path: api/apistruct/struct.go
      linters:
        - golint

    - path: .*_test.go
      linters:
        - gosec

    - path: chain/vectors/gen/.*
      linters:
        - gosec

    - path: cmd/lotus-bench/.*
      linters:
        - gosec

    - path: api/test/.*
      text: "context.Context should be the first parameter"
      linters:
        - golint

linters-settings:
  goconst:
    min-occurrences: 6