我有遗留的 C++ 代码,我应该从中删除未使用的代码。问题是代码库很大。
如何找出从未调用/从未使用过的代码?
有两种未使用的代码:
对于第一种,一个好的编译器可以提供帮助:
-Wunused
-Wunreachable-code
catch
对于第二种,难度要大得多。静态地,它需要对整个程序进行分析,即使链接时间优化实际上可能会删除死代码,但实际上程序在执行时已经发生了很大的变化,几乎不可能向用户传达有意义的信息。
因此有两种方法:
gcov
如果你对这个主题非常感兴趣,并且有时间和倾向自己实际开发一个工具,我建议使用 Clang 库来构建这样一个工具。
因为 Clang 将为您解析代码并执行重载解析,所以您不必处理 C++ 语言规则,您将能够专注于手头的问题。
然而,这种技术无法识别未使用的虚拟覆盖,因为它们可能被您无法推理的第三方代码调用。