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

30 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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.yml``lefthook.yml``embedfs/assets/.gitkeep``embedfs/frontend-dist/.gitkeep`
- 开发流程影响git commit 时自动触发 lint 检查lint 不过则提交被拒绝