# .golangci.yml - 为你的项目量身定制的 linter 配置

linters-settings:
  # 这里可以对特定的 linter 进行微调
  errcheck:
    # 检查未处理的错误，但可以排除一些常见的、我们确认无需处理的函数
    exclude-functions:
      - io/ioutil.ReadFile
      - io.Copy
      - io.WriteString
      - os.Create

linters:
  # 明确我们想要禁用的 linter
  disable:
    # --- 暂时禁用的“干扰项” ---
    - godox # 禁用对 TODO, FIXME 注释的检查，让我们能专注于代码

    # --- 暂时禁用的“风格/复杂度”检查器 ---
    - gocyclo # 暂时不检查圈复杂度
    - funlen  # 暂时不检查函数长度
    - lll     # 暂时不检查行长度
    - wsl     # 检查多余的空格和换行，可以后期再处理
    - gocritic # 这个检查器包含很多子项，有些可能过于严格，可以先禁用，或在下面精细配置

  # 排除路径：分析这些文件但不报告问题（使用 regex 匹配）
  exclusions:
    paths:
      # 排除 docs/ 目录（匹配路径以 docs/ 开头）
      - '^docs/'

    # 精细排除规则：用于特定文件/文本的 linter 排除
    rules:
      # 排除对 main.go 中 log.Fatalf 的抱怨（仅针对 goconst linter）
      - path: '^main\.go$'
        text: "log.Fatalf"
        linters:
          - goconst

  # 你也可以明确启用你认为最重要的检查器，形成一个“白名单”
  # enable:
  #   - govet
  #   - errcheck
  #   - staticcheck
  #   - unused
  #   - gosimple
  #   - ineffassign
  #   - typecheck

run:
  # 完全跳过测试文件分析（不解析、不报告任何问题）
  tests: false