跳转至

Rust 代码审查

此命令会调用 rust-reviewer 代理,执行 Rust 特有的全面代码审查。

此命令的工作方式

  1. 验证自动检查:运行 cargo check、cargo clippy -- -D warnings、cargo fmt --check、cargo test — 任一失败则停止
  2. 识别 Rust 变更:使用 git diff HEAD~1(如果是 PR 则使用 git diff main...HEAD)检测已修改的 .rs 文件
  3. 执行安全审计:如果可用,运行 cargo audit
  4. 安全扫描:检查 unsafe 使用、命令注入和硬编码密钥
  5. 所有权审查:分析不必要的 clone、生命周期问题和借用模式
  6. 生成报告:按严重程度对问题进行分类

使用时机

使用 /rust-review 的时机: - 编写或修改 Rust 代码后 - 提交 Rust 变更前 - 审查包含 Rust 代码的 Pull Request 时 - 熟悉新的 Rust 代码库时 - 学习地道的 Rust 模式时

审查类别

CRITICAL(必须修复)

  • 生产代码路径中未检查的 unwrap()/expect()
  • 没有用 // SAFETY: 注释文档化不变条件的 unsafe
  • 查询中通过字符串插值导致的 SQL 注入
  • std::process::Command 中由未验证输入导致的命令注入
  • 硬编码的凭据
  • 通过 raw 指针导致的 use-after-free

HIGH(应当修复)

  • 为满足借用检查器而进行的不必要 .clone()
  • 当 &str 或 impl AsRef<str> 已足够时,仍使用 String 参数
  • 在 async 上下文中执行阻塞操作(std::thread::sleep、std::fs)
  • 共享类型缺少 Send/Sync 约束
  • 在业务关键 enum 中使用通配符 _ => 匹配
  • 大函数(超过 50 行)

MEDIUM(值得考虑)

  • 热路径中不必要的分配
  • 在大小已知时缺少 with_capacity
  • 没有正当理由的已抑制 clippy 警告
  • 公共 API 缺少 /// 文档
  • 对于忽略值容易引发 bug 的非 must_use 返回类型,考虑添加 #[must_use]

执行的自动检查

# ビルドゲート(レビュー前に通る必要あり)
cargo check

# リントと提案
cargo clippy -- -D warnings

# フォーマット
cargo fmt --check

# テスト
cargo test

# セキュリティ監査(利用可能な場合)
if command -v cargo-audit >/dev/null; then cargo audit; else echo "cargo-audit not installed"; fi

使用示例

User: /rust-review

Agent:
# Rustコードレビューレポート

## レビュー対象ファイル
- src/service/user.rs(変更)
- src/handler/api.rs(変更)

## 静的解析結果
- ビルド: 成功
- Clippy: 警告なし
- フォーマット: 通過
- テスト: 全通過

## 検出された問題

[CRITICAL] プロダクションパスでの未チェックunwrap
File: src/service/user.rs:28
Issue: データベースクエリ結果に`.unwrap()`を使用
```rust
let user = db.find_by_id(id).unwrap();  // ユーザーが見つからない場合にパニック
```
Fix: コンテキスト付きでエラーを伝搬
```rust
let user = db.find_by_id(id)
    .context("failed to fetch user")?;
```

[HIGH] 不要なClone
File: src/handler/api.rs:45
Issue: ボローチェッカーを満たすためにStringをクローン
```rust
let name = user.name.clone();
process(&user, &name);
```
Fix: cloneを回避するよう再構築
```rust
let result = process_name(&user.name);
use_user(&user, result);
```

## サマリー
- CRITICAL: 1
- HIGH: 1
- MEDIUM: 0

推奨: CRITICALの問題が修正されるまでマージをブロック

批准标准

状态 条件
批准 没有 CRITICAL 或 HIGH 问题
警告 仅有 MEDIUM 问题(谨慎合并)
阻止 检测到 CRITICAL 或 HIGH 问题

与其他命令的集成

  • 首先使用 /rust-test 确认测试通过
  • 如果发生构建错误,使用 /rust-build
  • 提交前使用 /rust-review
  • 对于非 Rust 特有的问题,使用 /code-review
  • 代理:agents/rust-reviewer.md
  • 技能:skills/rust-patterns/、skills/rust-testing/

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC