Skip to content

search_files

search_filesツールは、プロジェクト内の複数ファイルで正規表現検索を実行し、VJSPがコードベース全体で特定のコードパターン、テキスト、その他のコンテンツを特定して、コンテキスト付きの検索結果を返すことを支援します。

パラメータ仕様

このツールは以下のパラメータを受け付けます:

  • path(必須):検索対象のディレクトリパス(現在の作業ディレクトリからの相対パス)
  • regex(必須):検索に使用する正規表現パターン(Rust正規表現構文仕様に従う)
  • file_pattern(オプション):ファイルフィルタリングのためのワイルドカードパターン(例:*.tsですべてのTypeScriptファイルに一致)

機能概要

このツールは正規表現を使用して、指定されたディレクトリ内のファイルを包括的に検索し、各一致結果に対して周囲のコンテキストを表示します。プロジェクト構造全体で動作可能な高性能の「ファイル内検索」機能と同等です。

使用シナリオ

  • 特定の関数や変数のすべての呼び出し箇所を特定する必要がある場合
  • コードリファクタリング時、コード使用パターンを分析する場合
  • 特定のコードパターンのすべてのインスタンスを見つける必要がある場合
  • ルールに基づいてファイルをフィルタリングし、複数ファイルで指定されたテキストを検索する場合

コア機能

  • 高性能Ripgrepエンジンに基づき、単一の操作で包括的な複数ファイル検索を可能に
  • 各一致結果に対してコンテキストを表示(デフォルト:前後各1行)
  • ワイルドカードパターンによるファイルタイプ別フィルタリングをサポート(例:TypeScriptファイルのみを検索)
  • 一致結果の行番号を返し、迅速な位置特定を可能に
  • 正確な検索のための強力な正規表現をサポート
  • 出力結果数を自動的に300件に制限し、超過時にプロンプトを表示
  • 500文字を超える行を切り詰め、「[切り詰め済み...]」マーカーを追加
  • 隣接する一致結果を単一の表示ブロックにインテリジェントに統合し、可読性を向上

制限事項

  • プレーンテキストファイルで最も効果的に動作し、画像などのバイナリファイルには無効
  • 非常に大規模なコードベースでは検索パフォーマンスが低下する可能性あり
  • Rust正規表現構文に従い、他の正規表現実装との微妙な差異が存在
  • 圧縮ファイルやアーカイブファイル内の検索をサポートしない
  • コンテキスト表示行数はデフォルト値で固定(前後各1行)
  • 結果統合ルールにより、一致結果が隣接している場合、実際に表示されるコンテキスト行数が変動する可能性あり

実行フロー

search_filesツールを呼び出した後、以下のプロセスが実行されます:

  1. パラメータ検証:必須パラメータpathregexの妥当性を検証

  2. パス解決:相対パスを絶対パスに解決

  3. 検索実行

    • Ripgrep(rg)エンジンに基づいて高性能テキスト検索を実行
    • file_patternが指定されている場合、ルールに従ってファイルをフィルタリング
    • コンテキスト付きのすべての一致結果を収集
  4. 結果フォーマット

    • ファイルパス、行番号、コンテキストを追加して結果をフォーマット
    • 各一致結果に対して前後各1行のコンテキストを表示
    • 可読性を向上させるために結果構造を最適化
    • 結果数を300件に制限し、超過時にプロンプトを表示
    • 500文字を超える行を切り詰める
    • 隣接する一致結果を連続する表示ブロックに統合

検索結果フォーマット

検索結果には以下の情報が含まれます:

  • 各一致ファイルの相対パス(#プレフィックス付き)
  • 各一致結果の前後コンテキスト行(デフォルト各1行)
  • 3桁ゼロ埋めされた行番号、続いて|と行内容
  • 各一致結果ブロックの後の区切り線(----)

出力例:

# rel/path/to/app.ts
 11 |   // データ処理ロジック
 12 |   // TODO: 例外処理メカニズムを実装
 13 |   return processedData;
----

# 合計300件以上の一致が見つかりました。最初の300件のみ表示しています。正確な検索のため、マッチング条件を最適化してください。

一致結果が隣接している場合、個別に表示せず単一の表示ブロックに統合されます:

# rel/path/to/auth.ts
 13 | // ビジネスロジックコード
 14 | // TODO: パラメータ妥当性検証を追加
 15 | function validateUser(credentials) {
 16 |   // TODO: インターフェースレート制限戦略を実装
 17 |   return checkDatabase(credentials);
----

実用的な適用例

  • コードリファクタリングリクエストを受け取った際、VJSPは最初に対象関数のすべての呼び出し箇所を検索し、リファクタリング操作の完全性を確保します
  • プログラムのバグ調査時、VJSPは類似したコードパターンを検索し、コードベース全体の関連問題を特定します
  • 技術的負債の対処時、VJSPはプロジェクト内のすべてのTODOコメントを検索し、最適化ポイントを整理します
  • プロジェクト依存関係の分析時、VJSPは特定モジュールのすべてのインポート文を検索し、依存関係を明確にします

ツール使用例

すべてのJavaScriptファイル内のTODOコメントを検索:

<search_files>
<path>src</path>
<regex>TODO|FIXME</regex>
<file_pattern>*.js</file_pattern>
</search_files>

特定の関数のすべての定義と呼び出し箇所を検索:

<search_files>
<path>.</path>
<regex>function\s+calculateTotal</regex>
<file_pattern>*.{js,ts}</file_pattern>
</search_files>

プロジェクト全体で特定のインポートパターンを検索:

<search_files>
<path>.</path>
<regex>import\s+.*\s+from\s+['"]@components/</regex>
</search_files>