agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
53 lines (42 loc) • 2.21 kB
JavaScript
/**
* @file SRP recommendation generator
* @description Generates recommendations for SRP violations
*/
/**
* Generate recommendations for SRP violations
* @param {Object} analysis - File analysis results
* @returns {string[]} Array of recommendations
*/
function generateSRPRecommendations(analysis) {
const recommendations = [];
if (analysis.details.exportCount > 3) {
recommendations.push('Consider splitting into multiple modules - excessive exports indicate multiple responsibilities');
}
if (analysis.details.lineCount > 300) {
recommendations.push('Break down large file into smaller, focused modules');
}
if (analysis.details && analysis.details.foundClusters && analysis.details.foundClusters.length >= 2) {
const clusterTypes = analysis.details.foundClusters.map(c => c.clusterType).join(', ');
recommendations.push(`Separate mixed concerns: detected ${clusterTypes}`);
}
if (analysis.details.functionCount > 10) {
recommendations.push('AI TOKEN EFFICIENCY: This file has many functions (10+) which significantly increases token usage for AI. Split into focused modules to optimize AI processing.');
}
if (analysis.details.functionCount > 5 && analysis.details.functionCount <= 10) {
recommendations.push('Consider refactoring for AI efficiency: With 5+ substantial functions, AI needs to process many tokens. Balance the benefits of splitting vs organizational complexity.');
}
if (analysis.details.functionCount > 2 && analysis.details.functionCount <= 5) {
recommendations.push('Minor AI optimization opportunity: 3-5 functions is manageable, but consider splitting if functions are large or complex.');
}
// Don't recommend refactoring for 1-2 helper functions
if (analysis.details.functionCount === 2) {
recommendations.push('Low priority: 2 functions is acceptable if they are small helpers or tightly coupled. Only refactor if functions are substantial.');
}
if (analysis.severity === 'CRITICAL') {
recommendations.push('PRIORITY: This file requires immediate refactoring to improve maintainability');
}
return recommendations;
}
module.exports = {
generateSRPRecommendations
};