code-relation-analyzer
Version:
A TypeScript project dependency analysis tool that generates function-level dependency graphs
296 lines • 8.21 kB
TypeScript
/**
* 配置相关类型定义
*/
export interface CodeRelationConfig {
/** 项目配置 */
project: ProjectConfig;
/** 分析配置 */
analysis: AnalysisConfig;
/** 可视化配置 */
visualization: VisualizationConfig;
/** 输出配置 */
output: OutputConfig;
/** 性能配置 */
performance: PerformanceConfig;
/** 缓存配置 */
cache: CacheConfig;
/** 日志配置 */
logging: LoggingConfig;
}
export interface ProjectConfig {
/** 项目根目录 */
rootDir: string;
/** 包含的文件模式 */
include: string[];
/** 排除的文件模式 */
exclude: string[];
/** TypeScript配置文件路径 */
tsConfigPath?: string;
/** 是否包含node_modules */
includeNodeModules: boolean;
/** 是否包含测试文件 */
includeTestFiles: boolean;
/** 是否包含声明文件 */
includeDeclarationFiles: boolean;
/** 文件编码 */
encoding: string;
}
export interface AnalysisConfig {
/** 最大分析深度 */
maxDepth: number;
/** 是否分析文件依赖 */
analyzeFileDependencies: boolean;
/** 是否分析继承关系 */
analyzeInheritance: boolean;
/** 是否分析函数调用 */
analyzeFunctionCalls: boolean;
/** 是否分析参数流 */
analyzeParameterFlow: boolean;
/** 是否分析全局依赖 */
analyzeGlobalDependencies: boolean;
/** 是否计算复杂度 */
calculateComplexity: boolean;
/** 是否检测循环依赖 */
detectCircularDependencies: boolean;
/** 是否生成建议 */
generateRecommendations: boolean;
/** 复杂度阈值 */
complexityThresholds: ComplexityThresholds;
}
export interface ComplexityThresholds {
/** 圈复杂度阈值 */
cyclomaticComplexity: {
warning: number;
error: number;
};
/** 认知复杂度阈值 */
cognitiveComplexity: {
warning: number;
error: number;
};
/** 函数长度阈值 */
functionLength: {
warning: number;
error: number;
};
/** 参数数量阈值 */
parameterCount: {
warning: number;
error: number;
};
/** 嵌套深度阈值 */
nestingDepth: {
warning: number;
error: number;
};
}
export interface VisualizationConfig {
/** 是否生成可视化 */
enabled: boolean;
/** 默认图表类型 */
defaultType: string;
/** 画布尺寸 */
dimensions: {
width: number;
height: number;
};
/** 主题名称 */
theme: string;
/** 是否启用交互 */
interactive: boolean;
/** 是否启用动画 */
animated: boolean;
/** 节点配置 */
nodes: NodeVisualizationConfig;
/** 边配置 */
edges: EdgeVisualizationConfig;
/** 布局配置 */
layout: LayoutVisualizationConfig;
}
export interface NodeVisualizationConfig {
/** 最小大小 */
minSize: number;
/** 最大大小 */
maxSize: number;
/** 默认颜色 */
defaultColor: string;
/** 颜色映射 */
colorMapping: Record<string, string>;
/** 是否显示标签 */
showLabels: boolean;
/** 标签字体大小 */
labelFontSize: number;
}
export interface EdgeVisualizationConfig {
/** 最小宽度 */
minWidth: number;
/** 最大宽度 */
maxWidth: number;
/** 默认颜色 */
defaultColor: string;
/** 颜色映射 */
colorMapping: Record<string, string>;
/** 是否显示箭头 */
showArrows: boolean;
/** 箭头大小 */
arrowSize: number;
}
export interface LayoutVisualizationConfig {
/** 布局算法 */
algorithm: string;
/** 力导向参数 */
forceParameters: {
linkDistance: number;
linkStrength: number;
chargeStrength: number;
centerStrength: number;
};
/** 层次布局参数 */
hierarchicalParameters: {
nodeSpacing: number;
levelSpacing: number;
direction: 'horizontal' | 'vertical';
};
}
export interface OutputConfig {
/** 输出目录 */
outputDir: string;
/** 输出格式 */
formats: OutputFormat[];
/** 是否生成HTML报告 */
generateHtmlReport: boolean;
/** 是否生成JSON数据 */
generateJsonData: boolean;
/** 是否生成CSV数据 */
generateCsvData: boolean;
/** 是否压缩输出 */
compress: boolean;
/** 文件命名模式 */
fileNaming: FileNamingConfig;
}
export type OutputFormat = 'html' | 'json' | 'csv' | 'svg' | 'png' | 'pdf';
export interface FileNamingConfig {
/** 是否包含时间戳 */
includeTimestamp: boolean;
/** 是否包含项目名 */
includeProjectName: boolean;
/** 自定义前缀 */
prefix?: string;
/** 自定义后缀 */
suffix?: string;
}
export interface PerformanceConfig {
/** 最大并发数 */
maxConcurrency: number;
/** 内存限制(MB) */
memoryLimit: number;
/** 超时时间(毫秒) */
timeout: number;
/** 是否启用增量分析 */
incrementalAnalysis: boolean;
/** 是否启用并行处理 */
parallelProcessing: boolean;
/** 批处理大小 */
batchSize: number;
}
export interface CacheConfig {
/** 是否启用缓存 */
enabled: boolean;
/** 缓存目录 */
directory: string;
/** 缓存过期时间(毫秒) */
ttl: number;
/** 最大缓存大小(MB) */
maxSize: number;
/** 缓存策略 */
strategy: CacheStrategy;
/** 是否压缩缓存 */
compress: boolean;
}
export type CacheStrategy = 'lru' | 'lfu' | 'fifo' | 'ttl';
export interface LoggingConfig {
/** 日志级别 */
level: LogLevel;
/** 是否输出到控制台 */
console: boolean;
/** 是否输出到文件 */
file: boolean;
/** 日志文件路径 */
filePath?: string;
/** 日志格式 */
format: LogFormat;
/** 是否启用颜色 */
colors: boolean;
/** 是否显示时间戳 */
timestamp: boolean;
}
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
export type LogFormat = 'simple' | 'detailed' | 'json';
export interface CLIConfig {
/** 默认命令 */
defaultCommand: string;
/** 是否显示进度条 */
showProgress: boolean;
/** 是否显示详细输出 */
verbose: boolean;
/** 是否启用颜色输出 */
colors: boolean;
/** 是否在完成后打开报告 */
openReport: boolean;
/** 交互模式配置 */
interactive: InteractiveConfig;
}
export interface InteractiveConfig {
/** 是否启用交互模式 */
enabled: boolean;
/** 是否确认覆盖文件 */
confirmOverwrite: boolean;
/** 是否选择输出格式 */
selectOutputFormats: boolean;
/** 是否配置可视化选项 */
configureVisualization: boolean;
}
export interface ValidationConfig {
/** 是否验证TypeScript配置 */
validateTsConfig: boolean;
/** 是否验证项目结构 */
validateProjectStructure: boolean;
/** 是否验证依赖关系 */
validateDependencies: boolean;
/** 是否严格模式 */
strictMode: boolean;
/** 自定义验证规则 */
customRules: ValidationRule[];
}
export interface ValidationRule {
/** 规则名称 */
name: string;
/** 规则描述 */
description: string;
/** 规则类型 */
type: ValidationRuleType;
/** 规则参数 */
parameters: Record<string, any>;
/** 是否启用 */
enabled: boolean;
/** 严重程度 */
severity: 'warning' | 'error';
}
export type ValidationRuleType = 'file-naming' | 'import-order' | 'circular-dependency' | 'unused-export' | 'missing-type' | 'complexity-limit' | 'custom';
export interface PluginConfig {
/** 已启用的插件 */
enabled: string[];
/** 插件配置 */
configurations: Record<string, any>;
/** 插件目录 */
pluginDir?: string;
}
export interface ExperimentalConfig {
/** 是否启用实验性功能 */
enabled: boolean;
/** 实验性功能列表 */
features: string[];
/** 实验性配置 */
configurations: Record<string, any>;
}
//# sourceMappingURL=config.d.ts.map