如何自动查找未使用的#include指令?

时间:2020-03-05 18:49:57  来源:igfitidea点击:

通常,在编写新代码时,我们会发现缺少#include,因为该文件未编译。很简单,我们添加所需的#include。但是后来我们以某种方式重构了代码,现在不再需要几个#include指令。我如何发现不再需要哪些?

当然,我可以手动删除部分或者全部#include行并将其重新添加,直到再次编译该文件,但这在具有数千个文件的大型项目中实际上是不可行的。是否有任何工具可以帮助自动化任务?

解决方案

回答

我们可以使用PC-Lint / FlexeLint来做到这一点。

通常,该工具没有免费的OS版本。

我们可以通过引用传递而不是通过值传递和前向声明传递来删除#includes。这是因为编译器在编译时不需要知道对象的大小。但是,这将需要我们进行大量的手动工作。好消息是它将减少编译时间。

回答

我们可以编写一个"蛮力"命令行工具,逐行注释掉#includes并测试编译是否仍然有效。让我知道我们什么时候可以使用。 ; 0)

回答

本文介绍了一种通过使用Doxygen的解析方法#include删除的技术。那只是一个perl脚本,所以很容易使用。