在项目中查找未使用的文件

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

我们正在迁移Works资源库,因此我想对源树中存在的所有未引用文件进行剔除,然后再将其移入新的(空)资源库。

到目前为止,我已经手工完成,找到了我所知道的所有未引用文件,但是我想知道是否捕获了它们。一种方法是将项目文件逐个文件手动移动到新文件夹,然后查看编译时出现的问题。这将需要一周的时间,因此我需要一个自动化工具。

人们有什么建议?

说明:
1)是C ++。
2)文件混合。我正在寻找已被其他人取代但留在存储库中腐烂的文件,例如,file_iter.h未被程序中的任何其他文件引用,但仍保留在存储库中,以防万一有人要编译1996年的版本!现在我们移到一个新的存储库,我们可以安全地丢弃所有不再使用的文件。
3)Lint仅发现未使用的文件,而不是未使用的文件(我面前有7.5手册)。

解决方案

回答

我们已使用c ++标记了此帖子,所以我假设这是有问题的语言。如果那是存储库中唯一的东西,那么为每个文件名对存储库中的所有文件进行grep复制就不会太困难,以为我们提供一个良好的起点。如果存储库包含其他文件(元数据,支持文件,资源等),那么我们可能需要手动进行操作。

回答

像lint这样的静态源代码分析工具可能会完成这项工作。他们会告诉我们是否永远不会调用一段代码。

回答

我们是否看过Source-Navigator?它可以用作IDE,但是我发现在分析源代码结构方面非常擅长。例如,它可以找出源代码中在何处以及是否使用了某种方法。

我不知道它是否可编写脚本,但对我们而言可能是一个很好的起点。

回答

我无法为此提供现有工具,但是我希望我们可以从构建工具中获得很多此类信息(可能需要一些努力)。通常,我们至少可以让构建工具打印将要运行的命令,而无需实际运行它们。 (例如,make和bjam的-n选项可以做到这一点。)我们应该至少能够提取使用的源文件。

使用g ++-MM,我们可以获取给定源文件的所有非系统头文件。输出采用" make"规则的形式,但是经过一些过滤后,这应该不是问题。

我不知道这有帮助吗?这就是我会根据情况尝试的方法。

回答

实际上,我们可以通过运行"整个项目分析"(在其中将所有文件一起而不是单独进行分析)来使用Lint间接进行此操作。

将其配置为忽略除未引用的变量/枚举/函数等警告之外的所有警告,它应该为我们提供合理的指示,以确保这些问题不会被代码库中的其他问题所掩盖。