mcpField
C
code-review

code-review

github.com/shareai-lab测试与质量79.6k110 次安装3 天前更新
代码仓库

关于 code-review

面向开发者的结构化代码审查技能,覆盖安全性、正确性、性能、可维护性和测试,并提供审查流程、语言示例及命令行扫描建议。

主要功能

  1. 01安全与漏洞检查
  2. 02逻辑、性能及资源检查
  3. 03可维护性与测试审查
  4. 04审查流程及语言示例

适用场景

  1. 01审查拉取请求中的安全问题
  2. 02检查变更中的边界情况与资源泄漏
  3. 03合并前评估测试和可维护性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shareai-lab/learn-claude-code --skill code-review

安装后在 Claude Code 中输入/code-review确认已加载。

详细介绍

代码审查技能

现在,你已具备开展全面代码审查的专业能力。请遵循以下结构化流程:

审查清单

1. 安全性(关键)

检查以下方面:

  • 注入漏洞:SQL、命令、XSS、模板注入
  • 身份验证问题:硬编码凭据、身份验证机制薄弱
  • 授权缺陷:缺少访问控制、IDOR
  • 数据泄露:日志或错误消息中包含敏感数据
  • 密码学:算法薄弱、密钥管理不当
  • 依赖项:已知漏洞(使用 npm audit、pip-audit 检查)
# Quick security scans
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) 时却使用 O(n^2)
  • 缺少缓存:重复执行开销较大的计算
4. 可维护性

检查以下方面:

  • 命名:清晰、一致、具有描述性
  • 复杂度:函数超过 50 行,嵌套超过 3 层
  • 重复代码:复制粘贴的代码块
  • 死代码:未使用的导入、不可达分支
  • 注释:过时、多余,或在需要的地方缺失
5. 测试

检查以下方面:

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

审查输出格式

## Code Review: [file/component name]

### Summary
[1-2 sentence overview]

### Critical Issues
1. **[Issue]** (line X): [Description]
   - Impact: [What could go wrong]
   - Fix: [Suggested solution]

### Improvements
1. **[Suggestion]** (line X): [Description]

### Positive Notes
- [What was done well]

### Verdict
[ ] Ready to merge
[ ] Needs minor changes
[ ] Needs major revision

需要标记的常见模式

Python
# Bad: SQL injection
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# Good:
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))

# Bad: Command injection
os.system(f"ls {user_input}")
# Good:
subprocess.run(["ls", user_input], check=True)

# Bad: Mutable default argument
def append(item, lst=[]):  # Bug: shared mutable default
# Good:
def append(item, lst=None):
    lst = lst or []
JavaScript/TypeScript
// Bad: Prototype pollution
Object.assign(target, userInput)
// Good:
Object.assign(target, sanitize(userInput))

// Bad: eval usage
eval(userCode)
// Good: Never use eval with user input

// Bad: Callback hell
getData(x => process(x, y => save(y, z => done(z))))
// Good:
const data = await getData();
const processed = await process(data);
await save(processed);

审查命令

# Show recent changes
git diff HEAD~5 --stat
git log --oneline -10

# Find potential issues
grep -rn "TODO\|FIXME\|HACK\|XXX" .
grep -rn "password\|secret\|token" . --include="*.py"

# Check complexity (Python)
pip install radon && radon cc . -a

# Check dependencies
npm outdated  # Node
pip list --outdated  # Python

审查工作流

  1. 了解上下文:阅读 PR 描述和关联的问题
  2. 运行代码:尽可能在本地构建、测试并运行
  3. 自上而下阅读:从主要入口点开始
  4. 检查测试:更改是否经过测试?测试是否通过?
  5. 安全扫描:运行自动化工具
  6. 人工审查:使用上述清单
  7. 撰写反馈:指出具体问题、提出修复建议,并保持友善

评论

支持 Markdown