agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
42 lines (37 loc) • 1.07 kB
JavaScript
/**
* @file Find recursive calls within function content
* @description Single responsibility: Identify recursive function calls
*/
/**
* Find recursive calls within function content
*/
function findRecursiveCalls(funcName, funcContent) {
const calls = [];
const lines = funcContent.split('\n');
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
const trimmed = line.trim();
// Look for function calls to itself
if (funcName !== 'anonymous' && funcName !== 'arrow') {
const pattern = new RegExp(`\\b${funcName}\\s*\\(`, 'g');
if (pattern.test(trimmed)) {
calls.push({
lineOffset: i,
code: trimmed,
type: 'direct'
});
}
} else {
// For anonymous functions, look for common recursive patterns
if (/arguments\.callee|recursive|recurse/.test(trimmed)) {
calls.push({
lineOffset: i,
code: trimmed,
type: 'indirect'
});
}
}
}
return calls;
}
module.exports = findRecursiveCalls;