1
0
Files
nex/openspec/changes/backend-code-lint/proposal.md

1.6 KiB
Raw Blame History

Why

项目复杂度增长后AI 编写代码时经常忽略基本编码规范(如使用指定日志工具、正确处理错误等)。依赖 prompt 约定是"软约束",无法可靠防止违规。需要引入静态分析工具,将编码规范从"约定"升级为"机器可检查的硬约束",在提交时自动拦截问题代码。

What Changes

  • 新增 .golangci.yml 配置文件,启用 13 个 linter 并配置项目专属规则
  • 引入 lefthook 作为 Git hook 管理器,在 pre-commit 时自动运行 lint
  • 修复存量代码中的规范违规(约 31 处)
  • 解决 embedfs 模块导致 golangci-lint 无法运行的阻塞问题
  • 更新 README.md 补充代码规范说明

Capabilities

New Capabilities

  • code-lint: 后端代码静态分析规则配置,包括 13 个 linter 的启用、参数配置、测试/正式代码的差异化规则、生成代码排除等
  • pre-commit-hook: 基于 lefthook 的 pre-commit hook 配置,提交时自动运行 lint 检查

Modified Capabilities

  • module-logging: 新增 zap.Error(err) 优于 zap.String("error", err.Error()) 的规范要求
  • error-handling: 新增必须使用 errors.Is/As 而非直接 == 比较的强制要求
  • structured-logging: 补充 zap.Error(err) 的使用约定

Impact

  • 新增开发依赖lefthook二进制工具不影响生产代码
  • 修改文件:约 15 个 Go 源文件存量修复、README.md、Makefile
  • 新增文件:.golangci.ymllefthook.ymlembedfs/assets/.gitkeepembedfs/frontend-dist/.gitkeep
  • 开发流程影响git commit 时自动触发 lint 检查lint 不过则提交被拒绝