tanishqkancharla/calldiff

Diffs for function call stacks across git commits. 22 languages supported (AST-based, built using Tree-sitter). Great for agentic review.

何を解決するか

calldiff は、異なる git コミット間でのコード実行フローの変化を理解する問題を解決します。標準的な行ベースの diff は、どのコード行が変更されたかを示しますが、変更の「形状」、特にどの関数がどの他の関数を呼び出しているかという点を曖昧にすることがあります。これは、AI エージェントや開発者がプログラムの呼び出しフローを再構成するアジェンティックなコードレビューにおいて特に有用です。

動作方法

このツールは git ツリーからソースコードを読み取り、tree-sitter の文法を使用して 23 の異なる言語のコードを解析します。各関数の呼び出し元(callees)のリストを作成し、それらを呼び出しツリーに展開します。異なるコミットやブランチ間でこれらのツリーを比較することで、どの呼び出し元が追加・削除・移動されたかを特定できます。これは型チェッカーを完全に使用するのではなく、AST(構文木)ベース(構文的)であるため、動的呼び出しは解決しません。

対象ユーザー

呼び出しスタックや関数の依存関係の変更を可視化したい開発者や AI エージェント向けに設計されています。単に行単位のテキスト変更を見るのではなく、より深いコード構造の変化を把握したい場合に適しています。

特徴

  • 多言語対応: TypeScript、Python、Go、Rust、Java、C++ を含む 23 言語に対応。
  • 呼び出しフローの差分表示: git-diff 形式のスタイルで、呼び出しスタックの追加・削除を可視化。
  • 到達可能性解析: 特定のシンボルから別のシンボルへのすべての呼び出しパスを検出可能。
  • エージェント対応: 構造化出力(JSON、YAML、Markdown)を提供し、LLM との統合を可能にする MCP(Model Context Protocol)サーバー登録をサポート。
  • 呼び出しツリーの可視化: 特定のエントリポイントやファイルに対して ASCII 形式の呼び出しツリーを生成。

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト