# golangci-lint configuration for Oikos
# Docs: https://golangci-lint.run/usage/configuration/
run:
  timeout: 5m
  tests: true

linters:
  enable:
    - govet        # go vet
    - staticcheck  # advanced static analysis
    - ineffassign  # detect ineffectual assignments
    - unused       # find unused identifiers
    - errcheck     # check for unchecked errors
    - gosimple     # simplifications
    - typecheck    # standard type checking
    - misspell     # find commonly misspelled English words in comments
    - revive       # fast, configurable linter (replaces golint)

linters-settings:
  errcheck:
    # Allow unchecked errors on common Close/Flush patterns (deferred cleanup)
    exclude-functions:
      - (io.Closer).Close
      - (*os.File).Close

issues:
  # Exclude generated code
  exclude-rules:
    - path: _test\.go
      linters:
        - errcheck
    - path: internal/httpapi/gen/
      linters:
        - all
    - path: internal/db/sqlcgen/
      linters:
        - all
  # Don't auto-exclude common patterns
  exclude-use-default: false
  max-issues-per-linter: 0
  max-same-issues: 0
