C ++静态分析:查找调用某个成员函数的所有位置

时间:2016-05-09 19:03:26

标签: c++

我想说我想找到某个特定类的成员函数的所有调用。除了查找调用之外,我还对将参数传递给每个调用感兴趣。例如,在分析此代码后:

anyfile.cpp:
myobject.AFunction("string", 0);

otherfile.cpp:
otherobject.AFunction("anystring", aValue);

我希望输出如下:

AFunction called in file "anyfile.cpp" with arguments "string" and 0
AFunction called in file "otherfile.cpp" with arguments "anystring" and aValue=5
...

我想过使用regexp解析所有源代码,但当然这不起作用,因为AFunction可能出现在其他类中,并且不会得到用作参数的变量的值。

我认为我可能需要某种静态分析工具,我也对从未(或很少)发生的调用感兴趣。即,运行程序并尝试生成一些日志不是一个解决方案。调用该方法的地方有数百个,但软件很少接到这些调用(或者可能永远不会)。

2 个答案:

答案 0 :(得分:1)

我建议你试试cscope。它构建一个数据库文件,因此您不必在每次运行时重新构建符号表等。使用一些vim脚本,您甚至可以设法将其输出到我确定的文件中。

答案 1 :(得分:1)

我建议你试试Doxygen。它可以为来电者和被叫者建立文档。