/** * Universal SOLID Principles Analyzer * Works across multiple programming languages using the adapter pattern */ import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js'; import type { Violation } from '../../types.js'; import type { AST, LanguageAdapter } from '../../languages/types.js'; /** * Configuration for SOLID analyzer * * Spec-17 R5: maxClassComplexity (heuristic) is DEPRECATED — replaced by * maxMethodComplexity (per-method cyclomatic complexity, solid/method-complexity) * and classAggregateComplexity (class-size aggregation, solid/class-size). */ export interface SOLIDAnalyzerConfig { maxMethodsPerClass?: number; maxLinesPerMethod?: number; maxParametersPerMethod?: number; /** @deprecated Use maxMethodComplexity instead — this was a heuristic (1 + 2×methods + 5×extends + Σ(lines/10)) */ maxClassComplexity?: number; maxInterfaceMembers?: number; maxMethodComplexity?: number; classMethodsThreshold?: number; classAggregateComplexity?: number; checkDependencyInversion?: boolean; checkInterfaceSegregation?: boolean; checkLiskovSubstitution?: boolean; skipTestFiles?: boolean; } export declare const DEFAULT_SOLID_CONFIG: SOLIDAnalyzerConfig; export declare class UniversalSOLIDAnalyzer extends UniversalAnalyzer { readonly name = "solid"; readonly description = "Detects violations of SOLID principles"; readonly category = "architecture"; protected analyzeAST(ast: AST, adapter: LanguageAdapter, config: SOLIDAnalyzerConfig, sourceCode: string): Promise; /** * Analyze a class for SOLID violations */ private analyzeClass; /** * Analyze a function for SOLID violations */ private analyzeFunction; /** * Analyze an interface for Interface Segregation Principle */ private analyzeInterface; /** * Check for modification patterns (Open/Closed Principle) */ private hasModificationPatterns; /** * Check Liskov Substitution Principle */ private checkLiskovSubstitution; /** * Check Dependency Inversion Principle */ private checkDependencyInversion; /** * Helper methods */ private isTestFile; private isPrimitiveConstructor; private findNodeByLocation; private walkAST; } //# sourceMappingURL=UniversalSOLIDAnalyzer.d.ts.map