Skip to content

AI 生成代码 · 评审清单

每次合并前过一遍。可复制到 PR 描述。

功能与正确性

  • [ ] 是否满足验收句(输入/输出/错误)?
  • [ ] 边界:空值、0、超长、并发?
  • [ ] 失败路径是否明确(抛错 / 返回 Result)?

安全

  • [ ] 无密钥硬编码
  • [ ] 用户输入是否校验/转义?
  • [ ] SQL/命令是否参数化?
  • [ ] 鉴权是否在 服务端 执行?
ts
// ❌ 危险:拼接 SQL
const q = `SELECT * FROM users WHERE id = '${id}'`

// ✅ 参数化
await db.query('SELECT * FROM users WHERE id = $1', [id])
bash
# ❌ 危险:未校验的 shell 拼接
eval "rm -rf $USER_INPUT"

# ✅ 避免 shell;或白名单
printf '%s\n' "$USER_INPUT" | grep -E '^[a-z0-9_-]+$'

性能与资源

  • [ ] 无 N+1 查询
  • [ ] 无无界 SELECT * 大表
  • [ ] 超时 / 重试是否有上限
检查命令示例
依赖体积npx cost-of-modules / pnpm why lodash
慢查询看 DB EXPLAIN ANALYZE

可维护性

  • [ ] 命名可读
  • [ ] 无死代码 / 注释掉的大段
  • [ ] 日志含 correlation id(如有)
  • [ ] 公共 API 有简短注释

测试

bash
# 至少覆盖改动路径
npm test -- --coverage
go test ./... -count=1
cargo test
  • [ ] 有失败用例证明校验有效
  • [ ] 无 flaky(依赖真实网络要 mock)

发布

  • [ ] 迁移可回滚
  • [ ] 特性开关?(高风险)
  • [ ] 文档/CHANGELOG 需要更新?

PR 描述模板

markdown
## 为什么
## 怎么做
## 风险
## 测试计划
- [ ] 单测
- [ ] 手测步骤:...

文件夹树 ← docs/ 目录 · Git · Cloudflare Pages