symref
Version:
Static code checker for AI code agents (Windsurf, Cline, etc.)
106 lines (105 loc) • 3.37 kB
TypeScript
import { Project } from 'ts-morph';
import { CallGraphResult } from '../types';
/**
* 呼び出しグラフの構築と分析を担当するクラス
*/
export declare class CallGraphAnalyzer {
private project;
private nodeUtils;
private callGraph;
private outputDir;
/**
* コンストラクタ
* @param project ts-morphのプロジェクトインスタンス
* @param outputDir 出力ディレクトリ(オプション)
*/
constructor(project: Project, outputDir?: string);
/**
* 出力ディレクトリを確保
*/
private ensureOutputDir;
/**
* グラフファイルの出力パスを生成
* @param baseName 基本ファイル名
* @returns 出力パス
*/
private generateOutputPath;
/**
* プロジェクト全体の呼び出しグラフを構築
* @returns 構築された呼び出しグラフのノード数
*/
buildCallGraph(): number;
/**
* 関数宣言を処理
* @param sourceFile ソースファイル
*/
private processFunctions;
/**
* クラス宣言を処理
* @param sourceFile ソースファイル
*/
private processClasses;
/**
* 関数/メソッド本体内の呼び出し式を処理
* @param node 関数/メソッドノード
* @param callGraphNode 呼び出しグラフノード
*/
private processCallExpressions;
/**
* 呼び出し関係を記録
* @param caller 呼び出し元ノード
* @param calleeName 呼び出し先シンボル名
*/
private recordCallRelationship;
/**
* 呼び出し関係を構築
*/
private buildCallRelationships;
/**
* ノードを取得または作成
* @param symbolName シンボル名
* @param type シンボルタイプ
* @param node ノード(オプション)
* @returns 呼び出しグラフノード
*/
private getOrCreateNode;
/**
* 2つのシンボル間の呼び出し経路を検索
* @param fromSymbol 開始シンボル
* @param toSymbol 終了シンボル
* @returns 呼び出し経路の分析結果
*/
findPathsFromTo(fromSymbol: string, toSymbol: string): CallGraphResult;
/**
* シンボルを呼び出すすべての経路を検索
* @param symbol 対象シンボル
* @returns 呼び出し経路の分析結果
*/
findAllCallers(symbol: string): CallGraphResult;
/**
* 深さ優先探索で経路を検索
* @param current 現在のノード
* @param target 目標ノード
* @param visited 訪問済みノード
* @param path 現在の経路
* @param edges 現在の経路のエッジ
* @param results 結果の経路リスト
*/
private dfsSearch;
/**
* 逆方向の深さ優先探索で経路を検索
* @param current 現在のノード
* @param visited 訪問済みノード
* @param path 現在の経路
* @param edges 現在の経路のエッジ
* @param results 結果の経路リスト
*/
private dfsReverseSearch;
/**
* Mermaid形式のグラフを生成
* @param paths 経路リスト
* @param baseName 基本ファイル名
* @returns Mermaid形式の文字列と出力パス
*/
private generateMermaidFormat;
}