由于工程较大,代码文件过多,所以希望用代码查找出源代码中使用了递归的方法?
用正则表达式,查询方法名中包含相同方法名的规则
正则不太熟,也没有查到相关信息,希望给出详细方法,谢谢
用代码查找代码. 其实就是查找文本了. 思路,仅供参考;
1. 检查的单元项就是函数.
2. 基于不同的编程语言, 函数的定义有各自的特征; return_Type FunctionName(...){...}
这就是一个函数;
3. 在函数体内, 查找函数名字符串, 这样,基本可以过滤很多了. 就像一楼说的.
难点在函数域的确定.
用正则, 我觉得会好一些. 也就是搜索出 ...空格...(...){...} 这样格式的字符串.
是不是可以在一些第三方的小型编译器里面会容易确定函数域
已解决:
1.引用Mono.Cecil.Dll
2.
const string AssemblyFilePath = @"path\to\assembly.dll"; void Main() { var assembly = ModuleDefinition.ReadModule(AssemblyFilePath); var calls = (from type in assembly.Types from caller in type.Methods where caller != null && caller.Body != null from instruction in caller.Body.Instructions where instruction.OpCode == OpCodes.Call let callee = instruction.Operand as MethodReference select new { type, caller, callee }).Distinct(); var directRecursiveCalls = from call in calls where call.callee == call.caller select call.caller; foreach (var method in directRecursiveCalls) Debug.WriteLine(method.DeclaringType.Namespace + "." + method.DeclaringType.Name + "." + method.Name + " calls itself"); }