agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
38 lines (34 loc) • 1.84 kB
JavaScript
/**
* @file Code length similarity calculator for implementation scale assessment
* @description Single responsibility: Assess code block similarity based on implementation size and scale
*
* This calculator evaluates similarity between code blocks by comparing their line counts,
* providing insight into implementation scale and complexity. Similar line counts often
* indicate comparable implementation approaches and algorithmic complexity, making length
* a valuable dimension for identifying functionally equivalent code patterns.
*
* Design rationale:
* - Length similarity indicates comparable implementation complexity and development effort
* - Ratio-based scoring provides normalized similarity regardless of absolute size
* - Perfect length matches suggest similar implementation approaches and algorithmic scale
* - Conservative default line count prevents edge cases and ensures meaningful comparison
* - Linear ratio calculation provides intuitive similarity interpretation
*
* Length similarity methodology:
* - Identical line counts yield perfect similarity (1.0) indicating comparable implementation scale
* - Minimum/maximum ratio calculation prevents bias toward shorter or longer implementations
* - Default line count (1) handles blocks without computed length metrics gracefully
* - Proportional similarity scoring reflects implementation size relationships
* - Conservative approach ensures meaningful assessment for deduplication decisions
*/
/**
* Calculate length similarity
*/
function calculateLengthSimilarity(block1, block2) {
const lines1 = block1.lineCount || 1;
const lines2 = block2.lineCount || 1;
if (lines1 === lines2) return 1.0;
const ratio = Math.min(lines1, lines2) / Math.max(lines1, lines2);
return ratio;
}
module.exports = calculateLengthSimilarity;