可能重复: 在大型C++遗留应用程序中查找“死代码”
我的项目有很多C源文件,每个源文件都有很多全局函数。其中许多都不再被任何调用者引用。是否有一种简单的方法来识别哪些函数根本没有被任何人引用?
VC生成的地图文件似乎很有用。但是,我不确定如何/何时在映射文件中列出函数名。
发布于 2012-05-24 07:23:48
您可以使用CCCC (免费的、开源的),它为您的程序提供了许多度量标准。另一个选择是覆盖度 (不是免费的)。
这个问题可能是这个问题的重复:遗留C/C++项目中的死码检测
发布于 2012-05-24 07:48:36
我不认为地图文件会有任何用处。如果它和我见过的其他地图文件一样,它不会指示在哪里(如果在任何地方)符号被使用-只在它被定义的地方。您可以做的是在对象文件上运行dumpbin:例如,dumpbin /relocations实际上将显示符号的每一种用法,其中包含可能需要重新定位的地址(实际上,具有静态生存期的函数和变量)。然后,在输出上使用常用的工具来确定您感兴趣的函数是否存在。(作为主要从事Unix工作的人,我已经安装了CygWin并将使用grep。我不熟悉Windows下不同Unix工具的本机对应物。)
编写一个小脚本非常简单(使用Python或一些类似的脚本语言),它将解析每个对象文件的dumpbin /symbols输出,获取您定义的所有函数的名称,然后解析dumpbin /relocations的输出,给出您使用的函数的列表,最后进行两个函数的区别。(微软似乎已经想方设法让dumpbin的输出难以使用,但这并不难;你只需要知道该忽略哪些行就行了。)
https://stackoverflow.com/questions/10732832
复制相似问题