【问题标题】:Finding unused files in a project在项目中查找未使用的文件
【发布时间】:2010-09-08 06:28:23
【问题描述】:

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

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

人们有什么建议?

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

【问题讨论】:

  • 您能否详细描述一下您的构建环境。例如,您是否有可用的 UNIX 命令行类型工具,并且构建是使用 Make 或类似工具完成的。在这种情况下,我可以描述一个基于脚本的解决方案来做到这一点......

标签: c++ version-control file


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我目前正在度假,手头没有 lint 手册,但我可以看到这将如何显示源代码文件夹中未使用的文件。如果你能告诉我一种方法,我会很高兴......
      • 嗨 Graham,诀窍是生成一个 .lnt 文件,其中列出了解决方案中的所有文件,然后关闭除全局总结之外的所有内容。如果你回来后给我发私信(anna AT riverblade .co.uk),我很乐意引导你完成设置并解释结果。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-04-27
          • 1970-01-01
          • 2012-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多