mcpField
A
analyze-rust-ffi-crate-surface

analyze-rust-ffi-crate-surface

github.com/redisearch开发6.2k61 次安装今天更新
代码仓库

关于 analyze-rust-ffi-crate-surface

用于梳理 Rust FFI crate 或文件暴露给 C 的符号,并追踪它们在 C 代码库中的使用。报告包含符号名称、类型、使用模块,以及是否仅用于测试。

主要功能

  1. 01列出对 C 可见的 FFI 符号
  2. 02查找符号在 C 模块中的用途
  3. 03识别仅用于测试的符号
  4. 04可参考自动生成的头文件

适用场景

  1. 01审查 FFI crate 暴露的接口
  2. 02追踪 Rust 符号在 C 模块中的使用
  3. 03确认符号是否仅在测试中使用

安装

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

$npx skills add https://github.com/redisearch/redisearch --skill analyze-rust-ffi-crate-surface

安装后在 Claude Code 中输入/analyze-rust-ffi-crate-surface确认已加载。

详细介绍

分析 Rust FFI Crate 的接口

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

参数

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

如果路径不是以 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 符号,无论这些符号定义在哪个子模块中。

评论

支持 Markdown