version: "2"

run:
  timeout: 5m
  tests: true

linters:
  default: standard

  enable:
    - dupl
    - goconst
    - gocyclo
    - gosec
    - misspell
    - revive
    - unconvert
    - unparam

  settings:
    dupl:
      threshold: 100
    errcheck:
      check-type-assertions: true
      check-blank: false
      exclude-functions:
        - (*database/sql.DB).Close
        - (*database/sql.Rows).Close
        - (*database/sql.Tx).Rollback
    goconst:
      min-len: 3
      min-occurrences: 3
    gocyclo:
      min-complexity: 15
    misspell:
      locale: US
    revive:
      rules:
        - name: var-naming
        - name: exported

  exclusions:
    generated: lax
    paths:
      - third_party$
      - builtin$
      - examples$
    rules:
      - path: _test\.go
        linters:
          - dupl
          - errcheck
          - goconst
          - gocyclo
      - path: (.+)\.go$
        text: Error return value.*\.Close.*is not checked
      - path: (.+)\.go$
        text: Error return value.*\.Rollback.*is not checked
      - path: (.+)\.go$
        text: Error return value.*\.RemoveAll.*is not checked
      - path: (.+)\.go$
        text: 'unused-parameter: parameter ''cmd'' seems to be unused'
      - path: (.+)\.go$
        text: 'unused-parameter: parameter ''args'' seems to be unused'
      - path: (.+)\.go$
        text: 'var-naming: avoid meaningless package names'
      - path: (.+)\.go$
        text: exported.*SQLiteStorage.*stutters
      - path: (.+)\.go$
        text: 'G201: SQL string formatting'
      - path: (.+)\.go$
        text: G304.*file inclusion via variable
      - path: (.+)\.go$
        text: 'G301: Expect directory permissions'

issues:
  max-issues-per-linter: 0
  max-same-issues: 0
