查找项目中未使用的文件

时间:2008-09-09 10:32:18

标签: c++ version-control file

我们正在迁移我们的工作存储库,所以我想在将其移动到漂亮的新(空)存储库之前对源树中存在的所有未引用文件进行剔除。

到目前为止,我已经手工完成并找到了我所知道的所有未引用的文件,但我想知道是否已将它们全部捕获。一种方法是手动将项目文件按文件移动到新文件夹,并查看编译时粘贴的内容。这需要整周,所以我需要一个自动化工具。

人们建议什么?

澄清:
1)是C ++ 2)文件是混合的。我正在寻找已经被其他人取代但在存储库中已经腐烂的文件 - 例如,file_iter.h没有被程序中的任何其他文件引用,但是如果有人想要从中编译版本,则保留在存储库中1996年!现在我们正在转移到一个新的存储库,我们可以安全地丢弃所有不再使用的文件 3)Lint只发现未使用的包含 - 不是未使用的文件(我手头有7.5手册)。

5 个答案:

答案 0 :(得分:2)

你用 c ++ 标记了这篇文章,所以我假设这是有问题的语言。如果这是存储库中唯一存在的东西,那么在存储库中为每个文件名grep所有文件都不应该太难以为您提供一个良好的起点。如果存储库包含其他文件(元数据,支持文件,资源等),那么您可能需要手动执行此操作。

答案 1 :(得分:1)

我无法为它提供现有的工具,但我希望你可以从你的构建工具中获得大量这些信息(可能需要付出一些努力)。通常,您至少可以让构建工具打印它将运行的命令,而无需实际运行它们。 (例如-nmake的{​​{1}}选项执行此操作。)从中,您应该能够至少提取已使用的源文件。

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

我不知道这是否有帮助;这就是我在你的情况下会尝试的。

答案 2 :(得分:1)

您实际上可以通过运行“整个项目分析”(其中所有文件一起分析而不是单独分析)来间接使用Lint执行此操作。

将其配置为忽略除了未引用的变量/枚举/函数等警告之外的所有内容,它应该为您提供合理的指示,指出死木的位置,而不会被代码库中的任何其他人遮挡。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

你看过Source-Navigator了吗?它可以用作IDE,但我发现它非常擅长分析源代码结构。例如,它可以找出源代码中使用某种方法的位置和方式。

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