agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
73 lines (68 loc) • 3.47 kB
JavaScript
/**
* @file Comprehensive WET code analysis system aggregating all duplication detection capabilities
* @description Single responsibility: Provide unified access to complete WET/DRY analysis functionality
*
* This barrel index consolidates all WET (Write Everything Twice) code analysis functionality
* including both traditional and improved AST-based analyzers, utility functions, and
* recommendation systems. It serves as the main entry point for code duplication detection,
* similarity analysis, and deduplication guidance across the AgentSqripts platform.
*
* Design rationale:
* - Unified interface simplifies WET code analysis integration across tools
* - Comprehensive exports enable both basic and advanced duplication detection workflows
* - Dual analyzer support (original and improved) provides flexibility for different needs
* - Complete utility ecosystem supports custom analysis implementations
* - Configuration consolidation ensures consistent analysis behavior
*
* Analysis capabilities:
* - Original analyzer: Fast pattern-based duplication detection for quick assessments
* - Improved analyzer: AST-based semantic similarity with 100x performance improvement
* - Block extraction: Logical code unit identification for meaningful comparison
* - Similarity calculation: Advanced algorithms for duplicate and near-duplicate detection
* - Recommendation generation: Actionable guidance for strategic deduplication efforts
*
* Export organization:
* - Core analyzers: Main entry points for file and project analysis
* - Utility functions: Building blocks for custom analysis implementations
* - Configuration: Shared settings and patterns for consistent behavior
* - Grading system: DRY score calculation with intelligent warnings for over-optimization
*/
// Main analysis functions
const { analyzeFileWetCode, analyzeProjectWetCode } = require('./wetCodeAnalyzer');
const { analyzeFileWetCodeImproved, analyzeProjectWetCodeImproved } = require('./improvedWetCodeAnalyzer');
// Individual utilities
const { extractLogicalBlocks } = require('./blockExtractor');
const { normalizeLine } = require('./lineNormalizer');
const { calculateSimilarity } = require('./similarityCalculator');
const { calculateBlockComplexity } = require('./complexityCalculator');
const { generateBlockHash } = require('./blockHasher');
const { calculateEstimatedSavings } = require('./savingsCalculator');
const { getDryGrade, getWetGrade } = require('./gradeCalculator');
const { calculateDryScore } = require('./wetScoreCalculator');
const { groupDuplicateBlocks } = require('./duplicateGrouper');
const { groupDuplicateBlocksOptimized } = require('./optimizedDuplicateGrouper');
const { getAllFiles } = require('./fileSystemUtils');
const { generateWetRecommendations, generateProjectWetRecommendations } = require('./recommendationGenerator');
const { VALID_EXTENSIONS, WET_CODE_CONFIG, WET_PATTERNS } = require('./wetCodeConfig');
module.exports = {
// Original analyzer
analyzeFileWetCode,
analyzeProjectWetCode,
// Improved AST-based analyzer
analyzeFileWetCodeImproved,
analyzeProjectWetCodeImproved,
// Utilities
extractLogicalBlocks,
groupDuplicateBlocks,
groupDuplicateBlocksOptimized,
calculateSimilarity,
calculateBlockComplexity,
generateWetRecommendations,
generateProjectWetRecommendations,
getDryGrade,
getWetGrade,
calculateDryScore,
normalizeLine,
WET_CODE_CONFIG,
WET_PATTERNS
};