run:
  timeout: 3m
  issues-exit-code: 2
  tests: false # 不檢查測試檔案

linters:
  enable:
    - govet           # 官方靜態分析，抓潛在 bug
    - staticcheck     # 最強 bug/反模式偵測
    - revive          # golint 進化版，風格與註解規範
    - gofmt           # 風格格式化檢查
    - goimports       # import 排序
    - errcheck        # error 忽略警告
    - ineffassign     # 無效賦值
    - unused          # 未使用變數
    - bodyclose       # HTTP body close
    - gosimple        # 靜態分析簡化警告（staticcheck 也包含，可選）
    - typecheck       # 型別檢查
    - misspell        # 拼字檢查
    - gocritic        # bug-prone code
    - gosec           # 資安檢查
    - prealloc        # slice/array 預分配
    - unparam         # 未使用參數

issues:
  exclude-rules:
    - path: _test\.go
      linters:
        - funlen
        - goconst
        - cyclop
        - gocognit
        - lll
        - wrapcheck
        - contextcheck

linters-settings:
  revive:
    severity: warning
    rules:
      - name: blank-imports
        severity: error
  gofmt:
    simplify: true
  lll:
    line-length: 140

# 可自訂目錄忽略（視專案需求加上）
# skip-dirs:
#   - vendor
#   - third_party

# 可以設定本機與 CI 上都一致
# env:
#   GOLANGCI_LINT_CACHE: ".golangci-lint-cache"
