UNPKG

agentsqripts

Version:

Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems

46 lines (36 loc) 1.27 kB
/** * @file Find semantic duplicates within a set of blocks * @description Single responsibility: Find similar code blocks within a single file */ const { calculateSemanticSimilarity, identifyDuplicationPattern } = require('../../ast/semanticSimilarityCalculator'); const calculateAverageSimilarity = require('../metrics/calculateAverageSimilarity'); /** * Find semantic duplicates within a set of blocks */ function findSemanticDuplicates(blocks, context) { if (blocks.length < 2) return []; const groups = []; const processed = new Set(); for (let i = 0; i < blocks.length; i++) { if (processed.has(i)) continue; const group = [blocks[i]]; processed.add(i); for (let j = i + 1; j < blocks.length; j++) { if (processed.has(j)) continue; const similarity = calculateSemanticSimilarity(blocks[i], blocks[j]); if (similarity >= context.rules.similarityThreshold) { group.push(blocks[j]); processed.add(j); } } if (group.length > 1) { groups.push({ blocks: group, similarity: calculateAverageSimilarity(group), pattern: identifyDuplicationPattern(group) }); } } return groups; } module.exports = findSemanticDuplicates;