返回顶部
r

rust-code-reviewRust代码审查

Reviews Rust code for ownership, borrowing, lifetime, error handling, trait design, unsafe usage, and common mistakes. Use when reviewing .rs files, checking borrow checker issues, error handling patterns, or trait implementations. Covers Rust 2024 edition patterns and modern idioms.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
131
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

rust-code-review

Rust 代码审查

审查流程

按以下顺序操作以避免误报并捕获版本特定问题:

  1. 1. 检查 Cargo.toml — 注意 Rust 版本(2018、2021、2024)和 MSRV(如已设置)。2024 版本引入了对不安全语义、RPIT 生命周期捕获、临时作用域和 ! 类型回退的重大变更。这决定了哪些模式适用。如果存在工作区结构,请检查。
  2. 检查依赖项 — 注意关键 crate(thiserror vs anyhow、tokio 特性、serde 特性)。这些信息指示了预期的模式。
  3. 扫描变更文件 — 阅读完整函数,而不仅仅是差异。许多 Rust 错误隐藏在跨函数的所有权流中。
  4. 检查每个类别 — 按照下面的清单逐一检查,根据需要加载参考资料。
  5. 提交前验证 — 在提交发现之前加载 beagle-rust:review-verification-protocol。

输出格式

按以下格式报告发现:

text
[文件:行号] 问题标题
严重程度:严重 | 主要 | 次要 | 信息性
问题描述及其重要性说明。

快速参考

问题类型参考资料
所有权转移、借用、生命周期、克隆陷阱、迭代器references/ownership-borrowing.md
生命周期变体、协变/逆变、内存区域
references/lifetime-variance.md | | Result/Option 处理、thiserror、anyhow、错误上下文、Error trait | references/error-handling.md | | 异步陷阱、Send/Sync 约束、运行时阻塞 | references/async-concurrency.md | | Send/Sync 语义、原子操作、内存顺序、锁模式 | references/concurrency-primitives.md | | 类型布局、对齐、repr、PhantomData、泛型 vs dyn Trait | references/types-layout.md | | 不安全代码、API 设计、derive 模式、clippy 模式 | references/common-mistakes.md | | 安全契约、原始指针、MaybeUninit、健全性、Miri | references/unsafe-deep.md |

有关性能、指针类型、类型状态、clippy 配置、迭代器、泛型和文档的开发指导,请使用 beagle-rust:rust-best-practices 技能。

审查清单

所有权和借用

错误处理

  • - [ ] 可恢复错误使用 Result,而非 panic!/unwrap/expect
  • [ ] 错误类型提供上下文(thiserror 配合 #[error(...)] 或手动 Display)
  • [ ] ? 运算符配合适当的 From 实现或 .maperr() 使用
  • [ ] unwrap() / expect() 仅用于测试、示例或可证明安全的上下文
  • [ ] 错误变体足够具体,可供调用者采取行动
  • [ ] 应用程序中使用 anyhow,库中使用 thiserror(或使用替代方案有明确理由)
  • [ ] 当回退涉及分配时使用 orelse 变体(okorelse、unwraporelse)
  • [ ] 失败时使用 let-else 提前返回(let Ok(x) = expr else { return ... })
  • [ ] 错误日志使用 inspecterr,错误转换使用 map_err

特性和类型

  • - [ ] 特性最小且内聚(单一职责)
  • [ ] 类型的 derive 宏适当(Clone、Debug、PartialEq 正确使用)
  • [ ] 使用新类型防止原始类型痴迷(例如 struct UserId(Uuid) 而非裸 Uuid)
  • [ ] From/Into 实现无损且不会失败;TryFrom 用于可能失败的转换
  • [ ] 当不允许外部实现时使用密封特性
  • [ ] 在合理的情况下提供默认实现
  • [ ] 验证跨线程使用的类型的 Send + Sync 约束
  • [ ] 在公共特性上使用 #[diagnostic::on_unimplemented],当用户忘记实现时提供清晰的错误消息

不安全代码

  • - [ ] unsafe 块有解释不变量的安全注释
  • [ ] unsafe 最小化 — 只有真正不安全的操作在块内
  • [ ] 安全不变量有文档记录并由周围的安全代码维护
  • [ ] 没有未定义行为(空指针解引用、数据竞争、无效内存访问)
  • [ ] unsafe 特性实现证明为什么契约得到维护
  • [ ] 2024 版本:unsafe fn 体在不安全操作周围使用显式 unsafe {} 块(unsafeopinunsafefn 为 deny)
  • [ ] 2024 版本:extern C {} 块写为 unsafe extern C {}
  • [ ] 2024 版本:#[nomangle] 和 #[exportname] 写为 #[unsafe(nomangle)] 和 #[unsafe(exportname)]

命名和风格

  • - [ ] 类型使用 PascalCase,函数/方法使用 snakecase,常量使用 SCREAMINGSNAKECASE
  • [ ] 模块使用 snakecase
  • [ ] 返回布尔值的方法使用 is、has、can 前缀
  • [ ] Builder 模式方法接受并返回 self(而非 &mut self)以支持链式调用
  • [ ] 公共项有文档注释(///)
  • [ ] 忽略返回值可能是错误时在函数上使用 #[mustuse]
  • [ ] 导入顺序:std → 外部 crate → 工作区 → crate/super
  • [ ] lint 抑制优先使用 #[expect(clippy::...)] 而非 #[allow(...)]

性能

详细指导:beagle-rust:rust-best-practices 技能(references/performance.md)

  • - [ ] 热路径中没有不必要的分配(优先使用 &str 而非 String,&[T] 而非 Vec
  • [ ] collect() 类型已指定或可推断
  • [ ] 集合转换优先使用迭代器而非索引循环
  • [ ] 当大小已知时使用 Vec::withcapacity()
  • [ ] 没有冗余的 .tostring() / .to_owned() 链
  • [ ] 当直接传递迭代器可行时,没有中间的 .collect()
  • [ ] 求和时优先使用 .sum() 而非 .

标签

skill ai
v1.0.2 最新 2026-4-13 11:50
- Added new references: concurrency primitives, lifetime variance, type layout, and advanced unsafe code for deeper code review coverage.
- Updated guidance for Rust 2024 edition, including changes to unsafe code semantics, lifetime capture in RPIT, temporary scoping, and trait diagnostics.
- Expanded checklist items addressing new edition-specific patterns and pitfalls.
- Enhanced quick reference table for easier navigation to specialized review topics.
- Clarified error handling, trait best practices, and type/state pattern usage based on latest Rust idioms.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部