agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
45 lines (37 loc) • 1.22 kB
JavaScript
/**
* @file Calculate project-level metrics
* @description Single responsibility: Calculate WET code metrics for entire project
*/
/**
* Calculate project-level metrics
*/
function calculateProjectMetrics(fileResults, duplicateGroups, allBlocks) {
const totalFiles = fileResults.length;
const filesWithDuplicates = new Set();
duplicateGroups.forEach(group => {
group.blocks.forEach(block => {
filesWithDuplicates.add(block.file);
});
});
const totalLinesSaved = duplicateGroups.reduce((sum, group) =>
sum + group.impact.linesSaved, 0
);
const totalComplexity = allBlocks.reduce((sum, block) =>
sum + block.complexity, 0
);
const duplicateComplexity = duplicateGroups.reduce((sum, group) =>
sum + group.impact.complexity, 0
);
const wetScore = totalComplexity > 0 ?
Math.round((duplicateComplexity / totalComplexity) * 100) : 0;
return {
filesWithDuplicates: filesWithDuplicates.size,
percentFilesWithDuplicates: totalFiles > 0 ?
Math.round((filesWithDuplicates.size / totalFiles) * 100) : 0,
totalLinesSaved,
totalComplexity,
duplicateComplexity,
wetScore
};
}
module.exports = calculateProjectMetrics;