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. 01C 公開 FFI シンボルの一覧化
  2. 02C モジュール内の使用箇所の検索
  3. 03テスト限定の使用の識別
  4. 04生成済みヘッダーを参照

活用シーン

  1. 01FFI crate の公開インターフェースの監査
  2. 02Rust シンボルの 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 クレートの公開範囲を分析する

指定された Rust FFI クレートまたはファイルで定義されている、C から参照可能なすべてのシンボル(例:#[unsafe(no_mangle)] が付与された extern "C" fn や型定義)の一覧を作成します。 次に、C コードベースのどの部分でこれらのシンボルが使用されているかを特定します。

引数

  • <path>:Rust クレートまたはファイルへのパス。
  • <path 1> <path 2>:複数の Rust クレート/ファイル。

パスが 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 クレートには、build.rs スクリプトが cbindgen で作成した対応する自動生成ヘッダーファイルが src/redisearch_rs/headers にあります。 自動生成ヘッダーファイルには、Rust クレート内で定義されているすべての FFI シンボルが、定義されたサブモジュールにかかわらず含まれています。

コメント