搜索具有一定数量参数的函数的调用/第N个参数与正则表达式匹配的位置

时间:2015-04-01 16:56:07

标签: regex shell unix

我正在寻找任何unix命令行工具(在安装了GNU工具的Linux和Mac OS X上使用),它允许我搜索大型C ++(或Java或......)项目的源代码并执行以下一项或两项操作:

给定函数的名称和正整数N,

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

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

当然,完全普遍,这可能是任意硬的,但我在这里假设代码库足够好,所以这些函数调用的参数只是字符串,数字,其他函数调用,算术表达式等,但不是说,lambda表达式或其他一些疯狂的东西。我也不介意偶然的误报,我也不担心类名/模板等与函数名混淆。

实际上,如果有人担心误报/否定,那么变化就是列出函数名称的所有出现,然后列出每个列表的参数个数,如果脚本无法确定它,则为unknown

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

任何指示赞赏!

0 个答案:

没有答案