version: "2"

linters:
  enable:
    - errcheck        # Check all error return values
    - govet           # Suspicious Go constructs
    - staticcheck     # Large set of static analysis checks
    - ineffassign     # Detect ineffectual assignments
    - unused          # Find unused code
    - gofmt           # Formatting
    - goimports       # Import ordering
    - gocritic        # Common Go mistakes
    - noctx           # HTTP requests should use context
    - bodyclose       # HTTP response body must be closed
    - exhaustive      # Exhaustive enum switch
    - godot           # Comments should end with a period
    - misspell        # Spelling errors in comments/strings
    - whitespace      # Unnecessary blank lines

  settings:
    errcheck:
      check-type-assertions: true
    govet:
      enable-all: true
    staticcheck:
      checks: ["all"]
    godot:
      scope: declarations

linters-settings:
  goimports:
    local-prefixes: github.com/veylant/ia-gateway

issues:
  exclude-rules:
    # Allow _ in test files for assertion patterns
    - path: _test\.go
      linters: [errcheck]
    # Generated proto files are not our code
    - path: gen/
      linters: ["all"]

run:
  timeout: 5m
