Regex 搜索对具有特定数量参数/其中第N个参数与正则表达式匹配的函数的调用 < >我正在寻找任何UNIX命令行工具(用于Linux和Mac OS X,安装了GNU工具),这允许我通过一个大型C++(或java或…)项目的源代码搜索,并执行下列一个或两个:

Regex 搜索对具有特定数量参数/其中第N个参数与正则表达式匹配的函数的调用 < >我正在寻找任何UNIX命令行工具(用于Linux和Mac OS X,安装了GNU工具),这允许我通过一个大型C++(或java或…)项目的源代码搜索,并执行下列一个或两个:,regex,shell,unix,Regex,Shell,Unix,给定函数名和正整数N 查找对该函数的所有调用,其中第N个参数分别等于某个值。匹配某个正则表达式 查找对该函数的所有调用,其中该函数的参数数正好为N(或者:至少/最多/小于/大于) 当然,在一般情况下,这可能是任意困难的,但我在这里假设代码库足够好,因此这些函数调用的参数只是字符串、数字、其他函数调用、算术表达式等,而不是lambda表达式或其他疯狂的东西。我也不介意偶尔出现误报,我也不担心类名/模板等与函数名混淆 事实上,如果有人担心误报/漏报,一种变体是列出函数名的所有情况,然后为每个列表

给定函数名和正整数N

  • 查找对该函数的所有调用,其中第N个参数分别等于某个值。匹配某个正则表达式

  • 查找对该函数的所有调用,其中该函数的参数数正好为N(或者:至少/最多/小于/大于)

当然,在一般情况下,这可能是任意困难的,但我在这里假设代码库足够好,因此这些函数调用的参数只是字符串、数字、其他函数调用、算术表达式等,而不是lambda表达式或其他疯狂的东西。我也不介意偶尔出现误报,我也不担心类名/模板等与函数名混淆

事实上,如果有人担心误报/漏报,一种变体是列出函数名的所有情况,然后为每个列表列出参数的数量,或者
未知
(如果脚本无法确定)

我很确定我可以编写一个perl脚本来完成我所需要的大部分工作,但这似乎是一个非常有用的工具,我想知道(希望?:)是否有人已经编写了类似的东西——甚至可能是基于(比如)clang,并对每个源文件使用AST。尽管基于纯文本解析的soemthing可能更好,因为它可能很容易适应其他语言


感谢任何指点

我不知道它是否能做到这一切(但它可能能做到一部分,或者是一个起点),但是
cscope
在这里可能会有一些用处。我会尝试RegEx——因为它只是一个很棒的工具——从“grep”函数开始并从那里扩展。常规语言(因此RegEx)不能匹配任意嵌套的paren对,括号、引号等——当然“regex”还有一些扩展不再是“常规”的,并且允许处理这个问题(例如,一些添加了“递归”特性)。。。。无论如何,是的,正如我所说,我当然可以自己动手——我的问题恰恰是在自己动手之前,先看看是否有人已经做了这项工作:)@Etan,谢谢,听起来很有用