mcpField
R
rust-review

rust-review

github.com/athola测试与质量343115 次安装3 天前更新
代码仓库

关于 rust-review

rust-review 是面向 Rust 项目的代码审计技能,供审查者检查安全性、正确性与惯用写法。它按审查范围渐进加载模块,并要求记录证据、验证发现。

主要功能

  1. 01所有权与错误处理检查
  2. 02并发模式审查
  3. 03unsafe 与 FFI 安全审计
  4. 04依赖漏洞检查
  5. 05数值转换与内存安全检查
  6. 06证据记录及发现验证

适用场景

  1. 01审查 Rust 代码变更
  2. 02检查 unsafe 代码块与 FFI 边界
  3. 03审计异步及同步并发模式
  4. 04检查 Cargo 依赖安全性

安装

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

$npx skills add https://github.com/athola/claude-night-market --skill rust-review

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

modules/
async-slop.md
builtin-preference.md
cargo-dependencies.md
cfg-test-misuse.md
coercion-params.md
collection-types.md
concurrency-patterns.md
conversion-traits.md
duplicate-validators.md
error-handling.md
error-messages.md
float-equality.md
idiomatic-elision.md
iterator-and-allocation-slop.md
match-wildcard.md
mem-forget-audit.md
model-specific-tells.md
mutable-static-audit.md
native-type-modeling.md
numeric-cast-safety.md
ownership-analysis.md
repr-packed-audit.md
silent-returns.md
sql-injection.md
test-slop.md
transmute-audit.md
unsafe-audit.md

详细介绍

Rust 审查工作流

面向专家级的 Rust 代码审计,重点关注安全性、正确性和惯用模式。

快速开始

/rust-review

验证: 使用 --help 标志运行命令,以确认其可用性。

适用场景

  • 审查 Rust 代码变更
  • 审计不安全代码块
  • 分析并发模式
  • 审查依赖项安全性
  • 审查性能优化

不适用场景

  • 不涉及 Rust 的通用代码审查——使用 unified-review
  • 性能分析——使用 parseltongue:python-performance 模式

必需的 TodoWrite 项

  1. rust-review:ownership-analysis
  2. rust-review:error-handling
  3. rust-review:concurrency
  4. rust-review:unsafe-audit
  5. rust-review:cargo-deps
  6. rust-review:native-modeling
  7. rust-review:idiomatic-elision
  8. rust-review:coercion-params
  9. rust-review:conversion-traits
  10. rust-review:numeric-cast-safety
  11. rust-review:mutable-static-audit
  12. rust-review:match-wildcard
  13. rust-review:transmute-audit
  14. rust-review:float-equality
  15. rust-review:mem-forget-audit
  16. rust-review:repr-packed-audit
  17. rust-review:evidence-log
  18. rust-review:findings-verified

渐进式加载

根据审查范围按需加载模块:

快速审查(所有权和错误):

  • 参见 modules/ownership-analysis.md,了解借用和生命周期分析
  • 参见 modules/error-handling.md,了解 Result/Option 模式

并发重点:

  • 参见 modules/concurrency-patterns.md,了解异步和同步原语

安全审计:

  • 参见 modules/unsafe-audit.md,了解不安全代码块文档
  • 参见 modules/mutable-static-audit.md,了解 static mut 全局变量及其线程安全替代方案
  • 参见 modules/numeric-cast-safety.md,了解会截断或损失精度的 as 转换
  • 参见 modules/match-wildcard.md,了解会破坏枚举穷尽性的兜底分支
  • 参见 modules/transmute-audit.md,了解不检查布局、直接重新解释字节的 mem::transmute/transmute_copy 调用
  • 参见 modules/repr-packed-audit.md,了解字段借用会变成非对齐引用的 #[repr(packed)] 布局

正确性审计:

  • 参见 modules/float-equality.md,了解与浮点数字面量进行 ==/!= 比较的情况
  • 参见 modules/mem-forget-audit.md,了解 mem::forget 导致的泄漏,以及对引用调用 drop(&x) 无效的情况

依赖项审查:

  • 参见 modules/cargo-dependencies.md,了解漏洞扫描

惯用模式:

  • 参见 modules/builtin-preference.md,了解转换 trait 和内置类型的优先选择
  • 参见 modules/native-type-modeling.md,了解优先使用枚举而非基本类型、新类型模式、类型状态和派生排序
  • 参见 modules/idiomatic-elision.md,了解生命周期省略、表达式式返回和显式的 -> () 单元返回
  • 参见 modules/coercion-params.md,了解会妨碍解引用强制转换的 &String/&Vec<T>/&PathBuf 参数(优先使用 &str/&[T]/&Path)
  • 参见 modules/conversion-traits.md,了解应使用 impl From 而非 impl Into 的情况,以及被丢弃的 try_into().unwrap() 转换错误

核心工作流

  1. 所有权分析:检查借用、生命周期和克隆模式
  2. 错误处理:验证 Result/Option 的用法和错误传播
  3. 并发:审查异步模式和同步原语
  4. 不安全代码审计:记录不变量和 FFI 契约
  5. 依赖项:扫描漏洞和更新
  6. 证据日志:记录命令和发现

Rust 质量检查清单

安全性
  • 所有不安全代码块均已添加 SAFETY 注释
  • FFI 边界均已妥善封装
  • 内存安全不变量均得到维护
  • 不使用 static mut 全局变量;共享状态使用 OnceLock/LazyLock、 原子类型或 Mutex/RwLock
  • 不使用 mem::transmute/transmute_copy;字节使用 from_le_bytes/from_bits/bytemuck 转换,指针使用 .cast()
  • 借用 #[repr(packed)] 字段前先复制出来(不得创建未对齐的引用)
  • 不使用 mem::forget 泄漏资源(改用 ManuallyDrop/作用域),也不使用无效的 drop(&x) 来丢弃引用
  • mlock/munlock 调用:已验证 RLIMIT、确保页对齐并处理 ENOMEM
正确性
  • 错误处理完整
  • 并发模式安全可靠
  • 将有损 as 转换(长度截断、as u8/i8、as f32) 替换为 TryFrom/From
  • 枚举匹配完整;不使用 _ => unreachable!()/panic!/{} 兜底分支
  • 浮点数比较使用容差,不与浮点数字面量进行精确的 ==/!= 比较
  • 测试覆盖关键路径
性能
  • 没有不必要的分配
  • 优先借用而非克隆
  • 异步操作不会阻塞
惯用法
  • 已实现标准 trait
  • 优先使用转换 trait,而非辅助函数
  • 使用枚举表示字符串类型的值和布尔标志
  • 在适用时,使用 newtype(私有字段 + 验证构造函数)或类型状态编码领域不变量
  • 派生比较/排序 trait,而非手动编写
  • 适用生命周期省略规则时省略生命周期;在路径中使用 '_
  • 删除尾部的 return,改用尾表达式
  • 删除显式的 -> () 单元返回类型(默认会省略)
  • 参数使用 &str/&[T]/&Path,而非 &String/&Vec<T>/ &PathBuf(解引用强制转换接受两者,因此切片更通用)
  • 转换实现 From/TryFrom,而非 Into/TryInto;传播可失败转换的错误,而非调用 unwrap()
  • 错误类型设计合理
  • 文档完整

输出格式

## Summary
Rust audit findings

## Ownership Analysis
[borrowing and lifetime issues]

## Error Handling
[error patterns and issues]

## Concurrency
[async and sync patterns]

## Unsafe Audit
### [U1] file:line
- Invariants: [documented]
- Anchor: `verbatim source text at file:line`
- Risk: [assessment]
- Recommendation: [action]

## Native Type Modeling
[stringly-typed comparisons, boolean blindness, newtype/type-state notes]

## Idiomatic Elision
[needless lifetimes, trailing returns, explicit `-> ()` unit returns]

## Coercion Params
[`&String`/`&Vec<T>`/`&PathBuf` params that should be borrowed slices]

## Conversion Traits
[`impl Into` over `impl From`; discarded `try_into().unwrap()` errors]

## Numeric Cast Safety
[length-truncating, byte-narrowing, and f32 precision-losing `as` casts]

## Mutable Static Audit
[`static mut` globals and their thread-safe replacements]

## Match Wildcard
[catch-all `_ =>` arms that defeat enum exhaustiveness]

## Transmute Audit
[`mem::transmute`/`transmute_copy` calls and their typed replacements]

## Float Equality
[exact `==`/`!=` comparisons against float literals]

## Mem Forget Audit
[`mem::forget` leaks and no-op `drop(&x)` reference drops]

## Repr Packed Audit
[`#[repr(packed)]` layouts whose field borrows become unaligned]

## Dependencies
[cargo audit results]

## Recommendation
Approve / Approve with actions / Block

**验证:**运行带有 --help 标志的命令,以验证其是否可用。

确认发现有依据(rust-review:findings-verified)

将发现写入 .review/findings.json,运行引用验证器 (Skill(imbue:review-core) 第 5 步),删除验证器拒绝的发现,或将其标记为 UNVERIFIED。

退出标准

  • 所有不安全代码块均已审计
  • 并发模式均已验证
  • 依赖项均已扫描
  • 证据均已记录
  • 行动项均已分配
  • 每项报告的发现都带有 Location 和逐字 Anchor,并经 citation_verifier.py 确认(退出码为 0);否则,未验证的发现已删除或标记为 UNVERIFIED

评论

支持 Markdown