如何从Delphi XE2上的所有源文件中删除未使用的单元?

时间:2013-07-22 19:04:29

标签: delphi ide delphi-xe2

如何在Delphi XE2上的项目的所有源文件中从使用部分自动删除未使用的单元?

P.S。之后IDE将更快地运行。

5 个答案:

答案 0 :(得分:14)

没有办法完全自动化。

我知道有一些工具采用向导方法:

  • CnPack Uses Units Cleaner
  • Peganza的Pascal分析仪(和它的搭档icarus)。
  • Lazarus IDE的CodeTools包中有一个“Unused Units”对话框。

Peganza的工具只显示一份报告。 CnPack会提示您删除未使用的单位,但您必须确认。 Lazarus为您提供认为未使用的单位列表,并为您提供删除部分或全部单位的选择。

为什么不自动化?

因为这是静态分析。即使是最复杂的工具也无法100%确定是否在运行时使用特定的代码行,更不用说整个单元了。这些工具已经实现了自己的解析器来实现这一壮举,但它们并非万无一失。

在任何情况下,清理uses子句的主要好处是消除源本身和代码完成功能的视觉混乱。是的,在编译过程中获得了一些性能,某些IDE后台操作会稍微加快但我认为如果您认为IDE会奇迹般地加速,您会感到失望。

您将通过以下方式看到更好的IDE和编译器性能:

  1. 将您的项目分解成可以独立处理的小块。
  2. 消除重复的代码。
  3. 禁用不需要的IDE包。
  4. 我当然不是想阻止你删除未使用的单位引用。正如我所说,这将有助于整理你的来源。只要确保你出于正当的理由这样做。

答案 1 :(得分:12)

我们有一个名为 Delphi Unit Dependency Scanner (DUDS)的实用程序。它扫描整个项目并构建一个完全可搜索的单元和依赖项树。它在查找未使用的单位时非常有用。

该应用程序是免费软件,您可以找到它here

免责声明 - 我是作者。

答案 2 :(得分:4)

不要以为我会想要一个能够在“使用”部分中自动删除不必要单位的工具......

但是有一些工具可以识别它们......看看Icarus ...你可以在http://www.peganza.com/downloads.htm获得免费软件

答案 3 :(得分:4)

CnPack有“使用清洁工具......”选项,我已逐个单位使用,没有任何问题。它还具有完成整个项目的能力 - 由于项目的规模,我没有尝试过。

答案 4 :(得分:-1)

使用从 Delphi XE 开始提供的 reFind.exe 实用程序,使用此命令

重新查找 *.pas /X:unuse.txt

unuse.txt 是一个文本文件,内容如下:

#unuse Unit1
#unuse Unit2
#unuse Unit3

就是这样。它将删除 uses 子句中的单位,如果单位是最后使用的单位并且有 ;在单位之后。