sicua
Version:
A tool for analyzing project structure and dependencies
115 lines (114 loc) • 2.76 kB
TypeScript
import ts from "typescript";
import { FunctionContext } from "../types/functionExtractor.types";
export declare class FunctionExtractor {
private sourceFile;
private content;
constructor(sourceFile: ts.SourceFile, content: string);
/**
* Extracts all function context from the source file
*/
extractFunctionContext(): FunctionContext;
/**
* Extracts a single function definition
*/
private extractFunction;
/**
* Extracts function signature
*/
private extractSignature;
/**
* Extracts function parameters
*/
private extractParameters;
/**
* Calculates function complexity
*/
private calculateFunctionComplexity;
/**
* Calculates cyclomatic complexity
*/
private calculateCyclomaticComplexity;
/**
* Calculates cognitive complexity
*/
private calculateCognitiveComplexity;
/**
* Calculates lines of code for a function
*/
private calculateLinesOfCode;
/**
* Calculates maximum nesting depth
*/
private calculateNestingDepth;
/**
* Identifies usage patterns for a function
*/
private identifyUsagePatterns;
/**
* Extracts React-specific information
*/
private extractReactInfo;
/**
* Checks if function is a React hook
*/
private isReactHook;
/**
* Extracts hooks used in the function
*/
private extractHooksUsed;
/**
* Calculates JSX complexity
*/
private calculateJSXComplexity;
/**
* Extracts prop types from function parameters
*/
private extractPropTypes;
/**
* Extracts state usage information
*/
private extractStateUsage;
/**
* Extracts effect usage information
*/
private extractEffectUsage;
/**
* Extracts the effect block content
*/
private extractEffectBlock;
/**
* Extracts side effects from function
*/
private extractSideEffects;
/**
* Extracts function dependencies
*/
private extractFunctionDependencies;
/**
* Extracts function calls for call graph
*/
private extractFunctionCalls;
/**
* Calculates overall complexity metrics
*/
private calculateComplexityMetrics;
/**
* Analyzes patterns across all functions
*/
private analyzePatterns;
/**
* Helper methods
*/
private isFunctionNode;
private getFunctionName;
private getFunctionKind;
private extractGenerics;
private isAsyncFunction;
private isPureFunction;
private hasExportModifier;
private getLocation;
private extractJSDocComment;
private visitNode;
private isConditionalCall;
private isInLoop;
}