Phase 0 · Agent 核心循环

代码审查技能

原创教程·2026/7/22·8 阅读

name: code-review description: 执行全面的代码审查,包括安全性、性能和可维护性分析。在用户要求审查代码、检查错误或审计代码库时使用。

代码审查技能

你现在拥有进行全面代码审查的专业知识。遵循这个结构化方法:

审查检查清单

1. 安全性(关键)

检查:

  • 注入漏洞:SQL、命令、XSS、模板注入
  • 认证问题:硬编码凭证、弱认证
  • 授权缺陷:缺少访问控制、IDOR
  • 数据暴露:日志、错误消息中的敏感数据
  • 加密:弱算法、不当的密钥管理
  • 依赖项:已知漏洞(使用 npm auditpip-audit 检查)
# 快速安全扫描
npm audit                    # Node.js
pip-audit                    # Python
cargo audit                  # Rust
grep -r "password\|secret\|api_key" --include="*.py" --include="*.js"

2. 正确性

检查:

  • 逻辑错误:差一错误、空值处理、边界情况
  • 竞态条件:没有同步的并发访问
  • 资源泄漏:未关闭的文件、连接、内存
  • 错误处理:被吞没的异常、缺少错误路径
  • 类型安全:隐式转换、any 类型

3. 性能

检查:

  • N+1 查询:循环中的数据库调用
  • 内存问题:大分配、保留引用
  • 阻塞操作:异步代码中的同步 I/O
  • 低效算法:可以 O(n^2) 而应该是 O(n)
  • 缺少缓存:重复的昂贵计算

4. 可维护性

检查:

  • 命名:清晰、一致、描述性
  • 复杂性:函数 > 50 行、深层嵌套 > 3 级
  • 重复:复制粘贴的代码块
  • 死代码:未使用的导入、不可达分支
  • 注释:过时、冗余、或在需要时缺失

5. 测试

检查:

  • 覆盖率:关键路径已测试
  • 边界情况:空值、空、边界值
  • 模拟:外部依赖被隔离
  • 断言:有意义、具体的检查

审查输出格式

## 代码审查:[文件/组件名称]

### 摘要
[1-2 句概述]

### 关键问题
1. **[问题]**(第 X 行):[描述]
   - 影响:[可能出什么问题]
   - 修复:[建议的解决方案]

### 改进建议
1. **[建议]**(第 X 行):[描述]

### 积极方面
- [做得好的地方]

### 结论
[ ] 可以合并
[ ] 需要小改动
[ ] 需要大修改

需要标记的常见模式

Python

# 错误:SQL 注入
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# 正确:
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))

# 错误:命令注入
os.system(f"ls {user_input}")
# 正确:
subprocess.run(["ls", user_input], check=True)

# 错误:可变默认参数
def append(item, lst=[]):  # 错误:共享的可变默认值
# 正确:
def append(item, lst=None):
    lst = lst or []

JavaScript/TypeScript

// 错误:原型污染
Object.assign(target, userInput)
// 正确:
Object.assign(target, sanitize(userInput))

// 错误:eval 使用
eval(userCode)
// 正确:永远不要对用户输入使用 eval

// 错误:回调地狱
getData(x => process(x, y => save(y, z => done(z))))
// 正确:
const data = await getData();
const processed = await process(data);
await save(processed);

审查命令

# 显示最近更改
git diff HEAD~5 --stat
git log --oneline -10

# 查找潜在问题
grep -rn "TODO\|FIXME\|HACK\|XXX" .
grep -rn "password\|secret\|token" . --include="*.py"

# 检查复杂性(Python)
pip install radon && radon cc . -a

# 检查依赖项
npm outdated  # Node
pip list --outdated  # Python

审查工作流程

  1. 理解上下文:阅读 PR 描述、关联的 issues
  2. 运行代码:如果可能,构建、测试、在本地运行
  3. 自顶向下阅读:从主要入口点开始
  4. 检查测试:更改是否被测试?测试是否通过?
  5. 安全扫描:运行自动化工具
  6. 手动审查:使用上面的检查清单
  7. 写反馈:具体、建议修复、友善

评论 (0)

暂无评论,快来抢沙发吧!

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.