agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
35 lines (30 loc) • 1.11 kB
JavaScript
/**
* @file Calculate duplication impact score
* @description Single responsibility: Calculate the impact of code duplication
*/
/**
* Calculate duplication impact score
*/
function calculateDuplicationImpact(blocks) {
const totalLines = blocks.reduce((sum, b) => sum + b.lineCount, 0);
const totalComplexity = blocks.reduce((sum, b) => sum + b.complexity, 0);
const filesAffected = new Set(blocks.map(b => b.file)).size;
// Calculate potential savings
const avgLines = totalLines / blocks.length;
const potentialLinesSaved = (blocks.length - 1) * avgLines;
// Impact score considers multiple factors
const score = (
potentialLinesSaved * 1.0 + // Lines saved
totalComplexity * 0.5 + // Complexity
filesAffected * 10 + // Cross-file impact
blocks.length * 5 // Number of duplicates
);
return {
score: Math.round(score),
linesSaved: Math.round(potentialLinesSaved),
filesAffected,
occurrences: blocks.length,
complexity: totalComplexity
};
}
module.exports = calculateDuplicationImpact;