UNPKG

arela

Version:

AI-powered CTO with multi-agent orchestration, code summarization, visual testing (web + mobile) for blazing fast development.

66 lines 2.35 kB
/** * Cohesion calculator - measures intra-module/feature connections * Higher cohesion is better (files in the same module are more related) */ import { DirectoryAnalysis } from "./types.js"; export interface CohesionAnalysis { totalImports: number; internalImports: number; externalImports: number; cohesion: number; directoryScores: Map<string, number>; } /** * Calculate cohesion score for modules/features * * Algorithm: * 1. For each directory, count internal vs external imports * 2. Internal imports = connections within the directory (good) * 3. External imports = dependencies outside the directory (scattered) * 4. Score = (internalImports / totalImports) * 100 * * Score scale: * 0-20: Very scattered (files in module are unrelated) * 21-40: Scattered (some related files) * 41-60: Moderate (reasonably grouped) * 61-80: Good (tightly grouped) * 81-100: Excellent (highly cohesive) * * Note: For feature-based (vertical) architectures, high cohesion is very important * For layer-based (horizontal) architectures, high internal cohesion per layer indicates * that files within each layer are tightly related (which can be good or bad depending on context) */ export declare function calculateCohesion(imports: Array<{ from: string; to: string | null; fromDir: string; toDir?: string; }>, directories: Map<string, DirectoryAnalysis>): CohesionAnalysis; /** * Identify directories with low cohesion (scattered files) */ export declare function detectCohesionIssues(analysis: CohesionAnalysis, directories: Map<string, DirectoryAnalysis>): Array<{ severity: 'critical' | 'warning'; message: string; directory: string; score: number; }>; /** * Estimate feature cohesion as percentage of features with good cohesion */ export declare function calculateFeatureCohesion(analysis: CohesionAnalysis, directories: Map<string, DirectoryAnalysis>): number; /** * Calculate shared state/utility usage * High usage of shared utilities can indicate poor cohesion */ export declare function detectSharedStateIssues(imports: Array<{ from: string; to: string | null; fromDir: string; toDir?: string; }>, directories: Map<string, DirectoryAnalysis>): Array<{ directory: string; count: number; files: string[]; }>; //# sourceMappingURL=cohesion.d.ts.map