UNPKG

agentsqripts

Version:

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

115 lines (102 loc) 3.46 kB
/** * @file Performance recommendation generator * @description Generates performance recommendations based on analysis */ /** * Generate performance recommendations * @param {Array} issues - Array of performance issues * @param {number} totalEffort - Total effort required * @param {number} analysisTime - Time taken for analysis * @returns {Array} Array of recommendations */ function generatePerformanceRecommendations(issues, totalEffort = 0, analysisTime = 0) { const recommendations = []; // Sort issues by priority (HIGH severity first, then by impact) const sortedIssues = [...issues].sort((a, b) => { const severityOrder = { 'HIGH': 3, 'MEDIUM': 2, 'LOW': 1 }; const aSeverity = severityOrder[a.severity] || 1; const bSeverity = severityOrder[b.severity] || 1; if (aSeverity !== bSeverity) return bSeverity - aSeverity; return (b.impact || 0) - (a.impact || 0); }); // Generate structured recommendations for each category const categories = {}; for (const issue of issues) { if (!categories[issue.category]) categories[issue.category] = []; categories[issue.category].push(issue); } // High-priority recommendations const highSeverityIssues = issues.filter(i => i.severity === 'HIGH'); if (highSeverityIssues.length > 0) { recommendations.push({ priority: 'HIGH', optimization: `Address ${highSeverityIssues.length} critical performance bottlenecks`, expectedImpact: 'Major performance improvement (50-80%)', category: 'Critical', effort: 'High' }); } // Algorithm-specific recommendations if (categories['Algorithm']) { recommendations.push({ priority: 'HIGH', optimization: 'Replace O(n²) algorithms with more efficient alternatives', expectedImpact: 'Significant scalability improvement', category: 'Algorithm', effort: 'Medium' }); } // I/O optimizations if (categories['I/O']) { recommendations.push({ priority: 'MEDIUM', optimization: 'Convert synchronous I/O operations to asynchronous', expectedImpact: 'Better throughput and responsiveness', category: 'I/O', effort: 'Low' }); } // String optimizations if (categories['String']) { recommendations.push({ priority: 'MEDIUM', optimization: 'Use array.join() instead of string concatenation in loops', expectedImpact: 'Reduced memory allocation and faster execution', category: 'String', effort: 'Low' }); } // DOM optimizations if (categories['DOM']) { recommendations.push({ priority: 'MEDIUM', optimization: 'Cache DOM queries and use batch operations', expectedImpact: 'Smoother UI interactions', category: 'DOM', effort: 'Medium' }); } // React optimizations if (categories['React']) { recommendations.push({ priority: 'MEDIUM', optimization: 'Implement React.memo and optimize re-renders', expectedImpact: 'Faster component updates', category: 'React', effort: 'Medium' }); } if (recommendations.length === 0) { recommendations.push({ priority: 'LOW', optimization: 'Code shows good performance patterns', expectedImpact: 'No major optimizations needed', category: 'General', effort: 'None' }); } return recommendations; } module.exports = { generatePerformanceRecommendations };