linters-settings:
  errcheck:
    check-type-assertions: true
    check-blank: true
  govet:
    check-shadowing: false
  gofmt:
    simplify: false
  revive:
    ignore-generated-header: true
  gocyclo:
    min-complexity: 20
  dupl:
    threshold: 100
  goconst:
    min-len: 3
    min-occurrences: 3
  misspell:
    locale: US
    ignore-words:
      - licence
  gosec:
    excludes:
      - G101
      - G114
      - G204
      - G402
  gci:
    sections:
      - standard
      - default
      - prefix(github.com/aquasecurity/)
      - blank
      - dot
  gomodguard:
    blocked:
      modules:
        - github.com/hashicorp/go-version:
            recommendations:
              - github.com/aquasecurity/go-version
            reason: "`aquasecurity/go-version` is designed for our use-cases"
        - github.com/Masterminds/semver:
            recommendations:
              - github.com/aquasecurity/go-version
            reason: "`aquasecurity/go-version` is designed for our use-cases"
  gocritic:
    disabled-checks:
      - appendAssign
      - unnamedResult
      - whyNoLint
      - indexAlloc
      - octalLiteral
      - hugeParam
      - rangeValCopy
      - regexpSimplify
      - sloppyReassign
      - commentedOutCode
    enabled-tags:
      - diagnostic
      - style
      - performance
      - experimental
      - opinionated
    settings:
      ruleguard:
        failOn: all
        rules: '${configDir}/misc/lint/rules.go'

linters:
  disable-all: true
  enable:
    - unused
    - ineffassign
    - typecheck
    - govet
    - revive
    - gosec
    - unconvert
    - goconst
    - gocyclo
    - gofmt
    - misspell
    - bodyclose
    - gci
    - gomodguard
    - tenv
    - gocritic

run:
  go: '1.21'
  skip-files:
    - ".*_mock.go$"
    - ".*_test.go$"
    - "integration/*"
    - "examples/*"

issues:
  exclude-rules:
    - linters:
        - gosec
      text: "G304: Potential file inclusion"
    - linters:
        - gosec
      text: "Deferring unsafe method"
    - linters:
        - errcheck
      text: "Close` is not checked"
    - linters:
        - errcheck
      text: "os.*` is not checked"
    - linters:
        - golint
      text: "a blank import should be only in a main or test package"
  exclude:
    - "should have a package comment, unless it's in another file for this package"
  exclude-use-default: false
  max-same-issues: 0
