4

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

到目前为止,我已经手动完成并找到了所有我知道的未引用文件,但我想知道我是否已经全部抓住了它们。一种方法是手动将项目文件逐个文件移动到新文件夹,并查看编译时会出现什么问题。这需要整整一周,所以我需要一个自动化工具。

人们有什么建议?

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

4

5 回答 5

2

你已经用c++标记了这篇文章,所以我假设这是有问题的语言。如果这是存储库中唯一的内容,那么为每个文件名对存储库中的所有文件进行 grep 处理应该不会太难,以便为您提供一个良好的起点。如果存储库包含其他文件(元数据、支持文件、资源等),那么您可能需要手动完成。

于 2008-09-09T10:36:21.813 回答
1

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

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

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

于 2008-09-09T21:23:39.713 回答
1

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

将其配置为忽略除未引用的变量/枚举/函数等警告之外的所有内容,它应该为您提供一个合理的指标,表明死木所在的位置,而这些问题不会被代码库中的任何其他问题所掩盖。

于 2009-02-08T22:58:23.030 回答
0

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

于 2008-09-09T10:42:49.270 回答
0

你看过Source-Navigator吗?它可以用作 IDE,但我发现它非常擅长分析源代码结构。例如,它可以找出您的源代码中在哪里以及是否使用了某个方法。

我不知道它是否可以编写脚本,但这对您来说可能是一个很好的起点。

于 2008-09-09T11:18:38.060 回答