UNPKG

agentsqripts

Version:

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

62 lines (53 loc) 2.13 kB
/** * @file Generate base class extraction recommendation * @description Single responsibility: Create recommendation for extracting base classes */ const extractClassNames = require('./extractClassNames'); const findCommonMethods = require('./findCommonMethods'); const findCommonPrefix = require('./findCommonPrefix'); const determineBestLocation = require('./determineBestLocation'); const calculateLinesReduced = require('./calculateLinesReduced'); const estimateRefactoringEffort = require('./estimateRefactoringEffort'); const generateBaseClassCode = require('./generateBaseClassCode'); const generateInheritanceExamples = require('./generateInheritanceExamples'); /** * Generate base class extraction recommendation */ function generateBaseClassRecommendation(group, projectContext) { const { blocks } = group; const classNames = extractClassNames(blocks); const commonMethods = findCommonMethods(blocks); const suggestedClassName = `Base${findCommonPrefix(classNames)}`; const suggestedLocation = determineBestLocation(blocks, projectContext, 'class'); return { type: 'EXTRACT_BASE_CLASS', title: `Extract base class: ${suggestedClassName}`, description: `${blocks.length} classes share common method implementations`, impact: { linesReduced: calculateLinesReduced(blocks), filesAffected: new Set(blocks.map(b => b.file)).size, maintainability: 'HIGH', effort: estimateRefactoringEffort(blocks, 'EXTRACT_BASE_CLASS') }, implementation: { suggestedName: suggestedClassName, suggestedLocation, step1: { action: 'Create base class', location: suggestedLocation, code: generateBaseClassCode(commonMethods, suggestedClassName) }, step2: { action: 'Extend from base class', examples: generateInheritanceExamples(classNames, suggestedClassName) } }, benefits: [ 'Follows DRY principle', 'Enables polymorphism', 'Centralizes shared behavior', 'Simplifies testing' ] }; } module.exports = generateBaseClassRecommendation;