UNPKG

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