代码逻辑缺陷审查Skill
适用场景
代码审查环节,系统性排查逻辑缺陷,优先找「能导致错误结果或崩溃」的问题。
执行步骤
- 按缺陷模式逐类排查(见下表)。
- 每条疑似缺陷构造触发场景验证:什么输入/时序会触发?
- 定位:文件 + 行号 + 触发场景 + 影响 + 修复建议。
- 分级:P0 崩溃/数据错误/安全,P1 功能缺陷,P2 隐患。
缺陷模式清单
| 模式 | 排查要点 |
|---|---|
| 空值/Null | 未判空直接解引用;Optional/?? 误用;返回 null 未约定 |
| 边界条件 | 数组越界、除零、溢出、off-by-one、空集合遍历 |
| 并发 | 共享变量无同步、check-then-act、双重检查锁错误 |
| 事务 | 事务范围错、多库操作无分布式事务方案、异常回滚失效 |
| 异常吞噬 | catch 后不处理不记录;finally 中 return;异常信息丢失 |
| 资源泄漏 | 连接/流/锁未关闭或关闭路径不全 |
| 幂等缺失 | 支付/提交类接口重复调用导致重复数据 |
| 状态机 | 非法状态跳转无校验;状态回退无保护 |
| 数值精度 | 浮点比较、金额用浮点、大数溢出 |
| 日期时间 | 时区混用、字符串拼接日期、DST 边界 |
| 循环逻辑 | 循环内修改集合、条件写反、死循环风险 |
| 类型转换 | 强转无保护、int/long 截断、枚举缺省分支 |
规范要点
- 每条缺陷必须有触发场景,禁止「可能有问题」式空泛描述。
- 不能确定是否触发时,降级为 P2 并注明「需验证」。
- 修复建议要具体到改法,但不直接改代码。
输出模板
| # | 模式 | 位置 | 触发场景 | 影响 | 级别 | 修复建议 |
自检清单
- 每条缺陷有可复现触发场景
- 级别划分有依据
- 修复建议具体可执行