agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
58 lines (47 loc) • 2.03 kB
JavaScript
/**
* @file Static bug recommendation generator
* @description Generates bug fix recommendations based on analysis results
*/
/**
* Generates bug fix recommendations
* @param {Array} issues - Array of detected issues
* @param {number} totalEffort - Total effort required for fixes
* @param {number} fileCount - Number of files analyzed
* @returns {Array<string>} Array of recommendations
*/
function generateBugRecommendations(issues, totalEffort, fileCount) {
const recommendations = [];
if (issues.length === 0) {
recommendations.push('No static bugs detected - code quality looks good');
return recommendations;
}
const highIssues = issues.filter(i => i.severity === 'HIGH');
const typeCoercionIssues = issues.filter(i => i.type === 'type_coercion');
const errorHandlingIssues = issues.filter(i => i.category === 'Error Handling');
const securityIssues = issues.filter(i => i.category === 'Security');
if (highIssues.length > 0) {
recommendations.push(`CRITICAL: Fix ${highIssues.length} high-severity bugs immediately`);
}
if (securityIssues.length > 0) {
recommendations.push(`SECURITY: Address ${securityIssues.length} security-related issues`);
}
if (typeCoercionIssues.length > 0) {
recommendations.push(`Type Safety: Replace ${typeCoercionIssues.length} == operators with === for strict equality`);
}
if (errorHandlingIssues.length > 0) {
recommendations.push(`Error Handling: Improve ${errorHandlingIssues.length} error handling patterns`);
}
// Bug density metrics
if (fileCount && fileCount > 0) {
const bugDensity = (issues.length / fileCount).toFixed(2);
recommendations.push(`Bug Density: ${bugDensity} issues per file`);
}
if (totalEffort > 0) {
const priority = totalEffort > 30 ? 'high' : totalEffort > 15 ? 'medium' : 'low';
recommendations.push(`Bug fix effort: ${totalEffort} points (${priority} priority)`);
}
return recommendations;
}
module.exports = {
generateBugRecommendations
};