Unsafe Rust 怎么测:不变量、FFI 契约与目标平台回归

Unsafe Rust 怎么测:不变量、FFI 契约与目标平台回归

Unsafe Rust 怎么测:不变量、FFI 契约与目标平台回归

先把问题落到具体对象

Unsafe 代码的测试要围绕它承诺的不变量展开。单元测试能查边界,FFI 和分配器契约还需要集成测试,架构相关行为则必须回到目标平台。

测试分层怎么做

单元层覆盖空指针、长度、对齐和别名条件;集成层验证 C ABI、释放方、回调生命周期和 panic 边界;目标平台回归检查不同优化级别与架构。Miri 和 sanitizer 能提供额外线索,但不能代替契约审查。

测试顺序

  1. 从安全封装入口验证空指针、长度、对齐和别名条件,拒绝路径也要有断言。
  2. 在 FFI 集成测试中明确由哪一侧分配、释放,回调可以存活多久,panic 如何隔离。
  3. 分别运行 Miri、可用的 sanitizer 和普通测试,记录各工具能覆盖的范围。
  4. 涉及 ABI、原子操作或架构特性的代码,最后回到支持的目标平台和优化级别回归。

交付前检查

失败应能回到具体不变量或外部契约。所有 Unsafe 块都要有安全封装的测试入口。

适用边界

工具通过不等于 Unsafe 契约成立。测试无法穷尽的对齐、别名和生命周期条件,仍需写在安全封装的接口约定中。