UNPKG

sicua

Version:

A tool for analyzing project structure and dependencies

97 lines (96 loc) 4.31 kB
/** * Updated individual metric calculation functions for component scoring * Focus on "easily overlooked" issues that developers miss * Each function returns a score from 0-100 where higher = more problematic */ import { ComponentRelation, DependencyAnalysisDetailedResult, ErrorHandlingCompleteAnalysis, ComplexityAnalysisResult, TypeAnalysisResult, SEOAnalysisResult, TranslationAnalysisResult, ComponentSimilarity } from "../../types"; import { ComponentFlowAnalysisResult } from "../componentFlow/types"; import { GeneralAnalysisResult } from "../general/types/generalAnalyzer.types"; export interface MetricCalculationContext { component: ComponentRelation; allComponents: ComponentRelation[]; generalAnalysis?: GeneralAnalysisResult; dependencyAnalysis?: DependencyAnalysisDetailedResult; errorHandlingAnalysis?: ErrorHandlingCompleteAnalysis; complexityAnalysis?: ComplexityAnalysisResult; typeAnalysis?: TypeAnalysisResult; seoAnalysis?: SEOAnalysisResult; translationAnalysis?: TranslationAnalysisResult; componentFlowAnalysis?: ComponentFlowAnalysisResult; deduplicationAnalysis?: ComponentSimilarity[]; } /** * Calculate circular dependency score * Returns 100 if component is in circular dependency, 0 otherwise */ export declare function calculateCircularDependencyScore(context: MetricCalculationContext): number; /** * Calculate error handling gaps score - ENHANCED * Higher score for components with risky operations but no error handling */ export declare function calculateErrorHandlingScore(context: MetricCalculationContext): number; /** * Calculate complexity score based on cyclomatic and cognitive complexity */ export declare function calculateComplexityScore(context: MetricCalculationContext): number; /** * Calculate maintainability index score (inverted - lower maintainability = higher score) */ export declare function calculateMaintainabilityScore(context: MetricCalculationContext): number; /** * Calculate coupling degree score */ export declare function calculateCouplingScore(context: MetricCalculationContext): number; /** * Calculate type issues score - ENHANCED * Focus on critical type safety gaps that developers miss */ export declare function calculateTypeIssuesScore(context: MetricCalculationContext): number; /** * NEW: Calculate accessibility issues score * Focus on missing accessibility features that developers often forget */ export declare function calculateAccessibilityScore(context: MetricCalculationContext): number; /** * NEW: Calculate performance issues score * Focus on bundle optimization and loading performance */ export declare function calculatePerformanceScore(context: MetricCalculationContext): number; /** * Enhanced SEO scoring that doesn't penalize simple pages */ export declare function calculateSEOScore(context: MetricCalculationContext): number; /** * Calculate zombie code score */ export declare function calculateZombieCodeScore(context: MetricCalculationContext): number; /** * Calculate translation issues score */ export declare function calculateTranslationScore(context: MetricCalculationContext): number; /** * Calculate magic numbers score - REDUCED SENSITIVITY * Less aggressive since magic numbers are often obvious to developers */ export declare function calculateMagicNumbersScore(context: MetricCalculationContext): number; /** * Calculate code metrics score (line metrics, comment ratio) - REDUCED IMPORTANCE */ export declare function calculateCodeMetricsScore(context: MetricCalculationContext): number; /** * Calculate deduplication opportunities score */ export declare function calculateDeduplicationScore(context: MetricCalculationContext): number; /** * Calculate component flow complexity score */ export declare function calculateComponentFlowScore(context: MetricCalculationContext): number; /** * NEW: Calculate React-specific complexity patterns that make components problematic */ export declare function calculateReactComplexityScore(context: MetricCalculationContext): number; /** * NEW: Calculate container component penalty * Container components should be simple - if they're complex, they're problematic */ export declare function calculateContainerComplexityScore(context: MetricCalculationContext): number;