Files
sub2api/skills/code-review-expert/references/checklists.md
2026-02-07 22:25:57 +08:00

7.6 KiB
Raw Blame History

Sub-Agent Review Checklists

5 个子 Agent 的完整检查清单。每个子 Agent 在独立 git worktree 中工作。


Agent 1: Security & Compliance (安全与合规)

1.1 Injection (注入漏洞)

  • SQL 注入:字符串拼接 SQL、未使用参数化查询
  • 命令注入exec/system/os.Command/subprocess 拼接用户输入
  • XSS未转义的用户输入写入 HTML/DOM
  • XXEXML 解析器未禁用外部实体
  • SSRF用户可控 URL 用于服务端请求,缺少白名单
  • LDAP 注入LDAP 查询拼接用户输入
  • SSTI用户输入直接传入模板引擎
  • 路径穿越:文件操作中未校验 ../
  • Header 注入HTTP 响应头拼接用户输入 (CRLF)
  • Log 注入:日志中拼接未净化的用户输入

1.2 Authentication & Authorization

  • 缺少认证:敏感 API 端点未要求身份验证
  • 越权访问:缺少资源归属校验(水平越权)
  • 权限提升:普通用户可执行管理员操作(垂直越权)
  • 会话管理Session fixation、不安全 cookie、缺少超时
  • JWT弱签名算法 (none/HS256)、未验证签名、token 泄露
  • OAuth开放重定向、state 缺失、token 存储不安全
  • 默认凭证:代码中预设的用户名密码

1.3 Secrets & Sensitive Data

  • 硬编码密钥API key、密码、token、连接字符串写在源码
  • 密钥泄露:.env 提交版本控制、明文密码
  • 日志泄露:敏感数据出现在日志/错误信息中
  • API 响应泄露:接口返回超出必要范围的用户数据
  • 错误信息泄露:堆栈、内部路径、数据库结构暴露

1.4 Cryptography

  • 弱哈希MD5/SHA1 用于密码或安全场景
  • 不安全随机数math/rand 替代 CSPRNG
  • ECB 模式AES-ECB 等不安全加密模式
  • 硬编码 IV/Salt
  • 缺少完整性校验:加密但未做 HMAC/AEAD

1.5 Dependency Security

  • 已知漏洞:依赖清单中的 CVE
  • 过时依赖:已停止维护的库
  • 依赖来源非官方源、typosquatting
  • 许可证合规GPL 等传染性许可证混入商业项目

1.6 Privacy & Data Protection

  • PII 未加密存储或传输
  • 缺少数据过期/删除机制
  • 跨境传输未考虑地域合规

Agent 2: Architecture & Design (架构与设计)

2.1 Design Principles

  • SRP类/函数/模块承担过多职责
  • OCP修改核心逻辑而非通过扩展点添加
  • LSP子类/实现违反父类/接口契约
  • ISP接口过大强迫实现不需要的方法
  • DIP高层模块直接依赖低层实现

2.2 Architectural Patterns

  • 分层违规:跨层直接调用
  • 循环依赖:包/模块间循环引用
  • 上帝对象:单类承载过多数据和行为
  • 过度抽象:不必要的工厂/策略/装饰器
  • 模式误用:强行套用不适合的设计模式
  • 配置管理:硬编码环境相关值

2.3 API Design

  • 一致性:同系统 API 风格不一致
  • 向后兼容:破坏性变更未版本控制
  • 幂等性:写操作缺少幂等保证
  • 批量操作:逐条处理导致 N+1 网络请求
  • 分页:大列表缺少分页/游标
  • 错误响应:格式不统一、缺少错误码

2.4 Error Handling Strategy

  • 错误传播:底层错误未包装丢失上下文
  • 错误类型:字符串替代结构化错误
  • 恢复策略:缺少重试/降级/断路器
  • 边界处理:系统边界缺少防御性检查

2.5 Module Boundaries

  • 接口定义:模块间通过实现而非接口通信
  • 数据共享:模块间共享可变数据结构
  • 事件/消息:同步调用链过长
  • 领域模型:贫血模型、逻辑散落 Service 层

Agent 3: Performance & Resource (性能与资源)

3.1 Algorithm & Data Structure

  • 热路径上 O(n^2) 或更高复杂度
  • 不当数据结构:线性查找替代哈希
  • 循环内重复计算
  • 不必要的排序/遍历

3.2 Database Performance

  • N+1 查询:循环内逐条查询
  • 缺少索引WHERE/JOIN 字段未建索引
  • 全表扫描
  • 大事务持锁过久
  • 连接池未配置或配置不当
  • SELECT * 替代指定字段

3.3 Memory Management

  • 内存泄漏:未释放引用、全局缓存无上限
  • 循环内创建大对象/切片
  • 未使用缓冲 I/O、一次性读取大文件
  • 循环内字符串拼接
  • 高频对象未使用池化

3.4 Concurrency Performance

  • 全局锁替代细粒度锁
  • 热点资源锁竞争
  • 无限制创建 goroutine/线程
  • 对只读数据加锁
  • 无缓冲通道导致阻塞

3.5 I/O Performance

  • 异步上下文中阻塞调用
  • HTTP 客户端未复用连接
  • 大响应未压缩
  • 大数据一次性加载替代流式

3.6 Caching

  • 频繁重复计算/查询未缓存
  • 缓存穿透:不存在 key 反复查 DB
  • 缓存雪崩:大量 key 同时过期
  • 更新后未失效缓存
  • 无界缓存导致 OOM

3.7 Resource Leaks

  • 文件句柄:打开未关闭
  • HTTP response body 未关闭
  • 数据库查询结果集未关闭
  • Timer/Ticker/订阅未取消
  • Goroutine/线程启动后永不退出

Agent 4: Reliability & Data Integrity (可靠性与数据完整性)

4.1 Error Handling

  • 静默吞错:空 catch、忽略返回 error
  • 泛型 catchcatch(Exception e)
  • 错误消息缺少上下文 (who/what/why)
  • 库代码中 panic/os.Exit
  • 关键路径缺少 recover/降级

4.2 Null Safety

  • 空指针解引用:未检查 nil/null
  • Optional/Maybe 未正确解包
  • 空集合直接取下标
  • 长链式调用中环节返回 null

4.3 Concurrency Safety

  • 数据竞争:无保护读写共享变量
  • 死锁:多锁嵌套、不一致加锁顺序
  • check-then-act 未加锁
  • 非线程安全 Map 并发使用
  • 向已关闭 channel 发送数据

4.4 Transaction & Consistency

  • 多步数据库操作未包裹事务
  • 不恰当的事务隔离级别
  • 跨服务缺少补偿/Saga
  • 异步处理缺少确认/重试
  • 重试产生重复数据

4.5 Timeout & Retry

  • HTTP/DB/RPC 调用未设超时
  • 无限重试或缺少退避
  • 调用链超时未传递/收缩
  • 缺少断路器保护

4.6 Boundary Conditions

  • 整数溢出:大数、类型截断
  • 浮点精度:金额用浮点数
  • 时区未明确
  • UTF-8 多字节未处理
  • 空集合边界
  • 并发 first/last、空队列竞态

4.7 Graceful Shutdown

  • 缺少 SIGTERM/SIGINT 处理
  • 关闭时未等待进行中请求
  • 未释放 DB 连接、文件句柄
  • 内存中待写数据丢失

Agent 5: Code Quality & Observability (代码质量与可观测性)

5.1 Complexity

  • 函数圈复杂度 > 15
  • 深层嵌套 > 4 层
  • 函数超过 100 行
  • 参数超过 5 个
  • 单文件超过 500 行

5.2 Duplication

  • 大段相似代码 > 10 行
  • 相同业务逻辑多处独立实现
  • 魔法数字/字符串多处出现

5.3 Naming & Readability

  • 不符合语言惯例的命名
  • 含义模糊data/info/temp/result
  • 同一概念不同命名
  • 布尔命名不是 is/has/can/should
  • 不通用缩写降低可读性

5.4 Dead Code & Tech Debt

  • 未调用的函数、未使用的变量/导入
  • 被注释的代码块
  • TODO/FIXME/HACK 遗留
  • 使用 deprecated API

5.5 Test Quality

  • 关键业务路径缺少测试
  • 断言仅检查"不报错"
  • 缺少边界和异常路径测试
  • 测试间隐式依赖
  • 过度 mock
  • 依赖时间/网络等外部状态

5.6 Logging

  • 关键决策点缺少日志
  • ERROR 级别用于非错误场景
  • 字符串拼接而非结构化日志
  • 日志含密码/token/PII
  • 热路径过度日志

5.7 Observability

  • 缺少业务指标(请求量、延迟、错误率)
  • 跨服务缺少 trace ID
  • 缺少 liveness/readiness 探针
  • 关键故障路径缺少告警

5.8 Build & Deploy

  • 构建结果依赖环境状态
  • 缺少 lock 文件
  • 开发/生产配置差异未文档化
  • 迁移脚本缺少回滚方案
  • 大功能上线缺少 feature flag