code-relation-analyzer
Version:
A TypeScript project dependency analysis tool that generates function-level dependency graphs
197 lines • 5.24 kB
TypeScript
/**
* 分析结果相关类型定义
*/
import { ProjectInfo, FileInfo, DependencyInfo } from './project';
export interface AnalyzeProjectOptions {
/** 项目路径 */
projectPath: string;
/** 根目录 */
rootDir: string;
/** 输出路径 */
outputPath?: string;
/** 是否包含node_modules */
includeNodeModules?: boolean;
/** 是否包含测试文件 */
includeTests?: boolean;
/** 是否包含声明文件 */
includeDeclarations?: boolean;
/** 是否使用tsconfig */
useTsConfig?: boolean;
/** 最大分析深度 */
maxDepth?: number;
/** 文件匹配模式 */
filePatterns?: string[];
/** 排除模式 */
excludePatterns?: string[];
/** 是否生成可视化 */
generateVisualization?: boolean;
/** 是否生成报告 */
generateReport?: boolean;
/** 缓存配置 */
cache?: CacheOptions;
/** 性能配置 */
performance?: PerformanceOptions;
}
export interface CacheOptions {
/** 是否启用缓存 */
enabled: boolean;
/** 缓存目录 */
directory?: string;
/** 缓存过期时间(毫秒) */
ttl?: number;
}
export interface PerformanceOptions {
/** 最大并发数 */
maxConcurrency?: number;
/** 内存限制(MB) */
memoryLimit?: number;
/** 超时时间(毫秒) */
timeout?: number;
}
export interface ProjectAnalysisResult {
/** 项目信息 */
projectInfo: ProjectInfo;
/** 文件列表 */
files: FileInfo[];
/** 依赖关系 */
dependencies: DependencyInfo[];
/** 全局依赖 */
globalDependencies: DependencyInfo[];
/** 继承关系 */
inheritanceRelations: any[];
/** 函数调用 */
functionCalls: any[];
/** 参数流 */
parameterFlow: any[];
/** 依赖图 */
dependencyGraph: any;
/** 函数调用图 */
functionCallGraph: any;
/** 继承图 */
inheritanceGraph: any;
/** 全局依赖图 */
globalDependencyGraph: any;
/** 分析统计 */
statistics: AnalysisStatistics;
/** 问题报告 */
issues: AnalysisIssue[];
/** 建议 */
recommendations: Recommendation[];
/** 生成时间 */
generatedAt: Date;
}
export interface AnalysisStatistics {
/** 分析开始时间 */
startTime?: Date;
/** 分析结束时间 */
endTime?: Date;
/** 分析耗时(毫秒) */
duration?: number;
/** 总文件数 */
totalFiles: number;
/** 跳过的文件数 */
filesSkipped?: number;
/** 发现的问题数 */
issuesFound?: number;
/** 峰值内存使用(MB) */
peakMemoryUsage?: number;
/** 缓存命中率 */
cacheHitRate?: number;
/** 平均复杂度 */
averageComplexity: number;
/** 最大复杂度 */
maxComplexity: number;
/** 总复杂度 */
totalComplexity: number;
/** 总依赖数 */
totalDependencies: number;
/** 内部依赖数 */
internalDependencies: number;
/** 外部依赖数 */
externalDependencies: number;
/** 最大深度 */
maxDepth: number;
/** 平均文件大小 */
averageFileSize: number;
/** 总行数 */
totalLines: number;
/** 循环依赖数 */
circularDependencies: number;
/** 平均每文件依赖数 */
averageDependenciesPerFile: number;
/** 总函数数 */
totalFunctions?: number;
/** 总类数 */
totalClasses?: number;
/** 总接口数 */
totalInterfaces?: number;
/** 总全局依赖数 */
totalGlobalDependencies?: number;
}
export interface AnalysisIssue {
/** 问题ID */
id?: string;
/** 问题类型 */
type: string;
/** 严重程度 */
severity: 'info' | 'warning' | 'error';
/** 问题描述 */
message: string;
/** 文件路径 */
file?: string;
/** 行号 */
line?: number;
/** 列号 */
column?: number;
/** 相关代码片段 */
codeSnippet?: string;
/** 修复建议 */
fixSuggestion?: string;
}
export interface Recommendation {
/** 建议ID */
id?: string;
/** 建议类型 */
type: string;
/** 优先级 */
priority: 'low' | 'medium' | 'high';
/** 建议标题 */
title: string;
/** 建议描述 */
description: string;
/** 影响的文件 */
affectedFiles?: string[];
/** 预期收益 */
expectedBenefit?: string;
/** 实施难度 */
difficulty: 'easy' | 'medium' | 'hard';
}
export interface AnalysisProgress {
/** 当前阶段 */
stage: string;
/** 当前进度(0-100) */
progress: number;
/** 当前处理的文件 */
currentFile?: string;
/** 已处理文件数 */
processedFiles: number;
/** 总文件数 */
totalFiles: number;
/** 预估剩余时间(毫秒) */
estimatedTimeRemaining?: number;
/** 状态消息 */
message?: string;
}
export interface AnalysisContext {
/** 项目根路径 */
projectRoot: string;
/** TypeScript程序 */
program?: any;
/** 类型检查器 */
typeChecker?: any;
/** 源文件映射 */
sourceFiles?: Map<string, any>;
/** 配置选项 */
options: AnalyzeProjectOptions;
}
//# sourceMappingURL=analysis.d.ts.map