SuperAPI AI 工具集

unsafe-checker

安全与审计

查看项目

更新于 10-15 10:31

技能介绍

用途

unsafe-checker 用于 Rust 不安全代码的审查与 FFI 场景。当代码中出现 unsafe、裸指针、FFI、extern、transmute、*mut、*const、union、#[repr(C)]、libc、std::ffi 等关键词时触发,帮助开发者判断 unsafe 的使用是否合理,并检查安全注释与文档是否到位。

主要能力

  • 判断 unsafe 何时是合理的:FFI(调用 C 函数)、底层抽象(实现 Vec、Arc 等)、性能(在安全替代方案过慢且已测量为瓶颈时)。明确不合理的用法:在不理解原因的情况下绕过借用检查器。
  • 要求并检查安全文档:unsafe 块需要 // SAFETY: <why this is safe> 注释;unsafe 函数需要 /// # Safety 文档说明调用方要求。
  • 提供常见操作的安全要求速查:*ptr 解引用需有效、对齐、已初始化;&*ptr 还需无别名违规;transmute 需大小相同且位模式有效;extern "C" 需签名与 ABI 正确;static mut 需保证同步;impl Send/Sync 需确实线程安全。
  • 列出常见错误及修复:空指针解引用、释放后使用、数据竞争、对齐违规、无效位模式、缺少 SAFETY 注释。
  • 给出已废弃 API 的替代方案:mem::uninitialized() 与用于引用的 mem::zeroed() 改用 MaybeUninit<T>;裸指针算术改用 NonNull<T>、ptr::add;CString::new().unwrap().as_ptr() 需先存储 CString;static mut 改用 AtomicT 或 Mutex;手动 extern 改用 bindgen。
  • 提供 FFI crate 选型参考:C → Rust 用 bindgen;Rust → C 用 cbindgen;Python 用 PyO3;Node.js 用 napi-rs。

使用方式

该技能以技能形式加载,加载后会在相关主题出现时提供上述检查规则与参考信息。资料未提供具体的安装命令或调用步骤。

适用场景

适用于审查包含 unsafe 代码的 Rust 项目、编写或维护 FFI 绑定、排查裸指针与内存安全问题、以及统一团队的安全注释规范。

限制

资料未提供该技能的收费、价格、平台支持范围或效果保证等信息。其定位是辅助审查与参考,不能替代对具体代码的完整安全论证。