sca-tool
Version:
Universal static code analysis tool for calculating API operation costs across multiple frameworks (NestJS, Express, Fastify)
84 lines • 3.01 kB
TypeScript
import { AnalyzerConfig, FileAnalysis, ProjectAnalysis } from './types';
/**
* Main API Cost Analyzer class
*/
export declare class ApiCostAnalyzer {
private config;
private allPaths;
private currentConditions;
private sourceFile;
constructor(config?: Partial<AnalyzerConfig>);
/**
* Load configuration from file with fallbacks
*/
static loadConfigFromFile(configPath?: string): AnalyzerConfig;
/**
* Create analyzer with config loaded from file
*/
static fromConfigFile(configPath?: string): ApiCostAnalyzer;
/**
* Set framework preset
*/
setFramework(framework: string): void;
/**
* Update configuration
*/
updateConfig(config: Partial<AnalyzerConfig>): void;
/**
* Analyze a single TypeScript/JavaScript file for API operation costs
* @param filePath Path to the file to analyze
* @returns File analysis results including methods, execution paths, and cost calculations
*/
analyzeFile(filePath: string): FileAnalysis;
/**
* Analyze multiple files
*/
analyzeFiles(filePaths: string[]): FileAnalysis[];
/**
* Analyze entire project
*/
/**
* Analyze an entire project directory
* @param projectPath Path to the project directory
* @param patterns Glob patterns to match files (default: TypeScript and JavaScript files)
* @returns Project analysis results
*/
analyzeProject(projectPath: string, patterns?: string[]): ProjectAnalysis;
private generatePathDescription;
private generateMethodSummary;
private analyzeMethod;
private analyzeNode;
private analyzeAwaitStatement;
private analyzeVariableStatement;
private analyzeCallExpression;
private extractOperationName;
private isPartOfMethodChain;
private extractOperationFromStatement;
private extractParallelOperations;
private generateRecommendations;
private generateFileSummary;
private generateProjectSummary;
private visit;
private isMethodDeclaration;
/**
* Check if a node is an arrow function property (common in modern NestJS services)
* Handles both class property declarations and object literal assignments
*/
private isArrowFunctionProperty;
private getMethodName;
private getClassName;
private shouldAnalyzeMethod;
}
/**
* Convenience function to quickly analyze a file with NestJS preset
*/
export declare function analyzeNestJSFile(filePath: string, customConfig?: Partial<AnalyzerConfig>): FileAnalysis;
/**
* Convenience function to quickly analyze a NestJS project
*/
export declare function analyzeNestJSProject(projectPath: string, patterns?: string[], customConfig?: Partial<AnalyzerConfig>): ProjectAnalysis;
/**
* Convenience function for Express projects
*/
export declare function analyzeExpressProject(projectPath: string, patterns?: string[], customConfig?: Partial<AnalyzerConfig>): ProjectAnalysis;
//# sourceMappingURL=analyzer.d.ts.map