agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
45 lines (37 loc) • 1.32 kB
JavaScript
/**
* @file Check if similarity is acceptable given the context
* @description Single responsibility: Determine if code similarity is acceptable based on context
*/
const areSimilarlyNamedFunctions = require('./areSimilarlyNamedFunctions');
/**
* Check if similarity is acceptable given the context
*/
function isAcceptableSimilarity(blocks, context, classification) {
// Test files often have similar setup/teardown
if (context.allTestFiles && classification.pattern === 'test_setup') {
classification.reason = 'test_boilerplate';
return true;
}
// Configuration files often have similar structure
if (context.allConfigFiles) {
classification.reason = 'config_structure';
return true;
}
// Migration files follow patterns
if (context.allMigrationFiles) {
classification.reason = 'migration_pattern';
return true;
}
// CLI help functions have similar structure but different content
if (blocks.every(b => b.name === 'showHelp' || b.name === 'showUsage')) {
classification.reason = 'help_documentation';
return true;
}
// Similar names suggest intentional pattern
if (areSimilarlyNamedFunctions(blocks)) {
classification.reason = 'naming_convention';
return true;
}
return false;
}
module.exports = isAcceptableSimilarity;