我正在使用VS2008进行C ++项目。代码很老,已经通过很多人的手。有几个类层次结构,函数,枚举等不再使用。

有没有办法让编译器/链接器列出已声明或定义但未在任何地方被引用的标识符?

有帮助吗?

解决方案

PC-Lint“整个项目”分析(分析多个文件)可以做到这一点。如果您需要帮助,请随时与我联系。

其他提示

VS会警告函数中声明的标识符并且未使用,您可能需要移至警告级别4,但对于全局变量,以及寻找许多其他潜在问题,您最好尝试 lint visual lint

不确定Visual C ++,但g ++警告未使用的变量。您可以尝试通过g ++传递代码。

PC-Lint 将执行此操作。但是不要用一切来运行它。我做了并且有120万错误 - 相当于每行约5。由于几乎每个UI类都引用了resource.h和resource.h,因此几乎每个UI类都列出了许多#defines,lint称之为“用const int替换定义”。如需一个好的起点,请阅读这篇关于Power of 2博客的帖子

对于最明显的未使用的声明,高警告级别会处理此问题。

关于识别未使用的代码片段,deadstripper(不是深夜犯罪剧的中心,但是在链接过程中剔除未使用的代码的机制)只能让你获得部分 - 你真正想要的是代码覆盖率分析工具。存在很多,不幸的是,所有这些都相当昂贵。

具有良好上下文标记和调用图形机制的强大编辑器也会有所帮助。

参考格雷厄姆的帖子:FWIW我从来没有真正看到过“用const int替换定义”带有resource.h文件的消息 - 虽然其他一些(之前在同一位置定义)可能很痛苦。

无论如何,如果特定的PC-Lint消息妨碍了您正在寻找的内容,那么在您的options.lnt文件中使用-e将其关闭是一件简单的事情。还值得了解-w选项,它允许您全局设置警告级别(例如-w0 + e766关闭除消息766之外的所有内容)。

对于未使用的符号和声明,您需要注意诸如755(信息 - 未引用的全局宏),758(信息 - 未引用的全局枚举),769(信息 - 全局枚举常量)等消息未引用)和1714(信息 - 未引用成员函数)。请记住,这些在单文件分析中被抑制,因此您需要运行整个项目分析才能看到它们。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top