UNPKG

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
/** * @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;