sicua
Version:
A tool for analyzing project structure and dependencies
97 lines (96 loc) • 4.31 kB
TypeScript
/**
* 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;