agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
59 lines (49 loc) • 1.67 kB
JavaScript
/**
* @file Compare two blocks and identify differences
* @description Single responsibility: Perform detailed comparison between two code blocks
*/
const isVariableNameDifference = require('./isVariableNameDifference');
const isStringLiteralDifference = require('./isStringLiteralDifference');
const isNumberDifference = require('./isNumberDifference');
const isFunctionCallDifference = require('./isFunctionCallDifference');
/**
* Compare two blocks and identify differences
*/
function compareBlocks(block1, block2) {
const lines1 = block1.content.split('\n');
const lines2 = block2.content.split('\n');
const differences = {
totalDifferences: 0,
variableNames: 0,
stringLiterals: 0,
numbers: 0,
functionCalls: 0,
structure: 0
};
// Simple line-by-line comparison (could be enhanced with AST diff)
const maxLines = Math.max(lines1.length, lines2.length);
for (let i = 0; i < maxLines; i++) {
const line1 = lines1[i];
const line2 = lines2[i];
if (line1 === line2) continue;
differences.totalDifferences++;
if (!line1 || !line2) {
differences.structure++;
continue;
}
// Analyze type of difference
if (isVariableNameDifference(line1, line2)) {
differences.variableNames++;
} else if (isStringLiteralDifference(line1, line2)) {
differences.stringLiterals++;
} else if (isNumberDifference(line1, line2)) {
differences.numbers++;
} else if (isFunctionCallDifference(line1, line2)) {
differences.functionCalls++;
} else {
differences.structure++;
}
}
return differences;
}
module.exports = compareBlocks;