如何在Delphi 7的“使用条款”中识别和删除未使用的单元?

时间:2009-05-19 09:24:13

标签: delphi uses-clause

在我的一些非常大的项目中,这应该会减少可执行文件的大小。我相信还会有其他好处。

编辑:是否有一个实用程序可以扫描项目并自动删除多余的项目?我确实有100个项目,“自动删除”将是一等奖,尽管我必须在识别实用程序的帮助下采用手动方式。

7 个答案:

答案 0 :(得分:13)

您可能需要查看CnPack

CnPack包括一个Uses清洁工具,但还没有让我失望。

答案 1 :(得分:9)

我过去常常使用Icarus向我提供未使用的用户条目报告。

来自网页

  

ICARUS解析Delphi或Borland Pascal源代码并生成使用报告。此报告将帮助您从使用列表中删除不需要的单位。您还将知道哪些单元可以从接口使用列表移动到实现使用列表。

     

删除未使用的用法引用有以下好处:   更清洁的代码维护,无需担心未使用的代码   未使用单元中的初始化和终结部分的代码未链接   编译运行更顺畅,更快

     

ICARUS非常易于使用,只需选择一个源文件,设置几个选项,然后开始分析。或者让内置向导引导您完成此过程。

     

ICARUS是免费的。

答案 2 :(得分:2)

这样的工具永远无法分析是否需要执行使用过的单元的初始化或终结部分。从使用中删除单元可能导致不运行初始化和完成部分,从而导致错误。

答案 3 :(得分:2)

如果您的代码可以使用Free Pascal编译,Free Pascal编译器也会在代码中发出有关未使用单元的提示。

另请参阅此SO条目以及有关可能出现的问题的其他信息,例如基于RTTI的方法:

https://stackoverflow.com/questions/605977/tools-to-detect-dead-code-in-delphi2007-or-above/

答案 4 :(得分:2)

请记住,链接器将删除任何无法调用的内容。如果没有使用一个单元并且没有初始化或最终确定,那么无论如何它都将被完全剥离。在初始化或最终确定中引用的任何内容都将保留,但总的来说,这不应该带来太大的影响。

单元可能只包含初始化,因此无论如何都会限制全自动剥离。仅以某种方式改变系统行为的单元很可能没有参考但仍需要。 (考虑到具有良好泄漏跟踪的替换内存管理器。虽然它确实有你可以引用的东西,但是没有必要,只需使用它并获得泄漏报告。很好的仔细检查你的代码。)

答案 5 :(得分:1)

查看一些答案here

答案 6 :(得分:1)

Peganza有类似的工具:http://www.peganza.com/