Skip to content

list_code_definition_names

list_code_definition_names ツールは、指定ディレクトリのトップレベルにあるソースファイルからコード定義を抽出し、コードベースの構造的概要を提供します。行番号と定義のスニペットを表示することで、VJSPがコードアーキテクチャを理解するのに役立ちます。

list_code_definition_names

パラメータ

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

  • path(必須):トップレベルのソースコード定義を一覧表示するディレクトリのパスで、現在の作業ディレクトリからの相対パス

機能概要

このツールは、指定されたディレクトリのトップレベルにあるソースコードファイルをスキャンし、クラス・関数・インターフェースなどのコード定義を抽出します。各定義について行番号と実際のコードを表示し、コードベース内の重要なコンポーネントを素早く把握できるようにします。

使用シナリオ

  • VJSP がコードベースのアーキテクチャを素早く理解する必要があるとき
  • 複数ファイルにわたる重要なコード構成要素を特定する必要があるとき
  • 既存コードのリファクタリングや拡張を計画するとき
  • 他のツールを使って実装詳細に踏み込む前の段階
  • コードベースの異なる部分間の関係性を把握するとき

主な特徴

  • ソースファイルからクラス、関数、メソッド、インターフェースなどの定義を抽出
  • 各定義に対して行番号と実際のソースコードを表示
  • JavaScript、TypeScript、Python、Rust、Go、C++、C、C#、Ruby、Java、PHP、Swift、Kotlin など複数のプログラミング言語をサポート
  • 指定ディレクトリのトップレベルにあるファイルのみを処理(サブディレクトリは含まない)
  • パフォーマンス最適化のため、1回のリクエストで最大50ファイルまで処理
  • 情報過多を避けるため、トップレベルの定義に焦点を絞る
  • プロジェクト全体でのコード構成パターンを特定するのに役立つ
  • コードベースのアーキテクチャに関するメンタルマップを構築
  • より深い分析のために read_file などの他のツールと連携して動作

制限事項

  • トップレベルの定義のみを識別し、ネストされた定義は識別しない
  • 指定ディレクトリのトップレベルにあるファイルのみを処理し、サブディレクトリは処理しない
  • 1回のリクエストで最大50ファイルまで処理可能
  • 言語固有のパーサーに依存するため、検出品質は言語によって異なる
  • 構文が複雑な言語では、すべての定義を認識できない場合がある
  • 実装の詳細を理解するためのコード読解の代替にはならない
  • ランタイムパターンや動的なコード関係を検出することはできない
  • 定義がどのように使用されているかについての情報は提供しない
  • 高度に動的なコードやメタプログラミングを使用したコードでは、精度が低下する可能性がある
  • Tree-sitter パーサーがサポートする言語に限定される

動作の流れ

list_code_definition_names ツールが呼び出されると、以下の手順で処理を行います:

  1. パラメータ検証:必須の path パラメータを検証
  2. パス解決:相対パスを絶対パスに解決
  3. ディレクトリスキャン:指定ディレクトリのトップレベルのみをスキャンし、ソースコードファイルを収集(再帰的ではない)
  4. ファイルフィルタリング:処理対象を最大50ファイルに制限
  5. 言語検出:拡張子(.js, .jsx, .ts, .tsx, .py, .rs, .go, .cpp, .hpp, .c, .h, .cs, .rb, .java, .php, .swift, .kt, .kts)に基づいてファイルタイプを識別
  6. コード解析:Tree-sitter を使用してコードを解析し、以下の手順で定義を抽出:
    • ファイル内容を抽象構文木(AST)にパース
    • 言語固有のクエリ文字列を使用してクエリを生成
    • ファイル内での位置順にキャプチャ結果をソート
  7. 結果の整形:行番号と実際のソースコード付きで定義を出力

出力形式

出力はファイルパスの後に、定義の行番号と実際のソースコードを表示します。例:

src/utils.js: 
0--0 | export class HttpClient {
5--5 | formatDate() {
10--10 | function parseConfig(data) {

src/models/User.js: 
0--0 | interface UserProfile {
10--10 | export class User {
20--20 | function createUser(data) {

各行は以下の情報を表示:

  • 定義の開始行番号と終了行番号
  • 区切り文字(|)
  • 定義の実際のソースコード

この出力形式により、定義がファイル内のどこにあるか、またその実装の詳細を素早く確認することができます。

使用例

  • 新しいタスクを開始する際、VJSP は最初に重要なコード定義を一覧表示してプロジェクトの全体構造を理解します。
  • リファクタリング作業を計画する際、VJSP はこのツールを使用して影響を受ける可能性のあるクラスや関数を特定します。
  • 未知のコードベースを探索する際、VJSP は実装の詳細に踏み込む前に重要なコード構造をマッピングします。
  • 新機能を追加する際、VJSP は既存のパターンと関連するコード定義を特定して一貫性を維持します。
  • エラーをトラブルシューティングする際、VJSP はコードベースの構造をマッピングして問題の潜在的な原因を特定します。
  • アーキテクチャの変更を計画する際、VJSP は影響を受けるすべてのコンポーネントを特定します。

コード例

カレントディレクトリ内のコード定義を一覧表示:

<list_code_definition_names>
<path>.</path>
</list_code_definition_names>

特定のモジュールの構造を調査:

<list_code_definition_names>
<path>src/components</path>
</list_code_definition_names>

ユーティリティライブラリを探索:

<list_code_definition_names>
<path>lib/utils</path>
</list_code_definition_names>