UNPKG

agentsqripts

Version:

Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems

51 lines (39 loc) 2.18 kB
/** * @file Analyze duplicate group and generate specific recommendation * @description Single responsibility: Analyze group and route to appropriate recommendation generator */ const determineRefactoringStrategy = require('./determineRefactoringStrategy'); const generateUtilityFunctionRecommendation = require('./generateUtilityFunctionRecommendation'); const generateBaseClassRecommendation = require('./generateBaseClassRecommendation'); const generateSharedModuleRecommendation = require('./generateSharedModuleRecommendation'); const generateParameterizedFunctionRecommendation = require('./generateParameterizedFunctionRecommendation'); const generateConfigurationRecommendation = require('./generateConfigurationRecommendation'); const generateHigherOrderFunctionRecommendation = require('./generateHigherOrderFunctionRecommendation'); const generateGenericRecommendation = require('./generateGenericRecommendation'); /** * Analyze a duplicate group and generate specific recommendation */ function analyzeGroupAndRecommend(group, projectContext) { const { blocks, pattern, similarity } = group; if (!blocks || blocks.length < 2) return null; // Determine refactoring strategy based on pattern const strategy = determineRefactoringStrategy(group); // Generate recommendation based on strategy switch (strategy) { case 'EXTRACT_UTILITY_FUNCTION': return generateUtilityFunctionRecommendation(group, projectContext); case 'EXTRACT_BASE_CLASS': return generateBaseClassRecommendation(group, projectContext); case 'EXTRACT_SHARED_MODULE': return generateSharedModuleRecommendation(group, projectContext); case 'PARAMETERIZE_FUNCTION': return generateParameterizedFunctionRecommendation(group, projectContext); case 'EXTRACT_CONFIGURATION': return generateConfigurationRecommendation(group, projectContext); case 'USE_HIGHER_ORDER_FUNCTION': return generateHigherOrderFunctionRecommendation(group, projectContext); default: return generateGenericRecommendation(group, projectContext); } } module.exports = analyzeGroupAndRecommend;