RustFFI符号分析Skill analyze-rust-ffi-crate-surface

该技能用于分析Rust FFI crate中定义的C可见符号,确定C代码库中使用这些符号的模块,便于代码维护和互操作性检查。关键词:Rust, FFI, C代码, 符号分析, 代码审计, 互操作性

嵌入式软件 0 次安装 0 次浏览 更新于 3/11/2026

name: analyze-rust-ffi-crate-surface description: 确定C代码库的哪些部分使用Rust定义的C符号。

分析Rust FFI Crate表面

编译给定Rust FFI crate或文件中定义的所有C可见符号列表(例如,带有#[unsafe(no_mangle)]注释的extern "C" fn或类型定义)。 然后确定C代码库的哪些部分使用这些符号。

参数

  • <path>: Rust crate或文件的路径。
  • <path 1> <path 2>: 多个Rust crates/文件。

如果路径不以src/开头,假设它在src/redisearch_rs/c_entrypoint目录中。例如,numeric_range_tree_ffi变为src/redisearch_rs/numeric_range_tree_ffi。 如果路径指向一个目录,则审查该目录中所有Rust文件的文档。

指令

  • 读取相关的Rust源文件。
  • 编译它们暴露的所有FFI符号列表(例如,带有#[unsafe(no_mangle)]注释的extern "C" fn或类型定义)。 您可以使用src/redisearch_rs/headers中相应的自动生成头文件,如果有帮助的话。
  • 对于每个符号,确定C代码库中哪些模块使用它:
    • 对于函数,在C代码库中查找对该函数的调用。
    • 对于类型,检查它们是否用作函数参数、字段类型或在类型转换中。

发出报告,列出每个符号的以下信息:

  • 符号名称。
  • C代码库中使用它的模块。
  • 符号的类型(函数、类型等)。
  • 是否仅在C/C++单元测试中使用(即,在tests/下)。

自动生成的头文件

每个*_ffi Rust crate在src/redisearch_rs/headers中都有一个相应的自动生成头文件,由build.rs脚本通过cbindgen创建。 自动生成的头文件包括Rust crate定义的所有FFI符号,无论它们定义在哪个子模块中。