1
0

chore: 新增 backend-code-lint 变更计划,更新 .gitignore

This commit is contained in:
2026-04-24 00:19:56 +08:00
parent 1d7e839b49
commit 4c78ab6cc8
10 changed files with 539 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
# Error Handling — Delta
## MODIFIED Requirements
### Requirement: 使用类型安全错误判断
系统 SHALL 使用类型安全方式判断错误类型,并通过 lint 工具强制执行。
#### Scenario: 数据库错误判断
- **WHEN** 判断数据库唯一约束错误
- **THEN** SHALL 使用 errors.Is(err, gorm.ErrDuplicatedKey)
- **THEN** SHALL NOT 使用字符串匹配 err.Error()
#### Scenario: 网络错误判断
- **WHEN** 判断网络错误
- **THEN** SHALL 使用 errors.As(err, &net.Error) 判断网络错误
- **THEN** SHALL 使用 errors.As(err, &net.OpError) 判断操作错误
- **THEN** SHALL 使用 errors.Is(opErr.Err, syscall.ECONNRESET) 判断连接重置
- **THEN** SHALL NOT 使用字符串匹配判断错误类型
#### Scenario: 错误链判断
- **WHEN** 判断错误链中的特定错误
- **THEN** SHALL 使用 errors.Is 进行链式判断
- **THEN** SHALL 使用 errors.As 提取特定类型错误
#### Scenario: lint 自动拦截错误比较
- **WHEN** 代码中使用 `err == someError` 直接比较
- **THEN** errorlint SHALL 检测并报错
- **THEN** SHALL 改用 errors.Is()
#### Scenario: lint 自动拦截类型断言
- **WHEN** 代码中使用 `err.(SomeType)` 直接类型断言
- **THEN** errorlint SHALL 检测并报错
- **THEN** SHALL 改用 errors.As()
#### Scenario: lint 自动拦截忽略错误返回值
- **WHEN** 代码中使用 `_ = funcReturnsError()` 忽略错误
- **THEN** errcheck SHALL 检测并报错
- **THEN** SHALL 正确处理错误或添加 //nolint:errcheck 注释(仅在有意忽略时)