如何在Delphi XE2项目的所有源文件中自动删除用途部分中未使用的单元?
P.S. 在此之后,IDE将会更加快速。
如何在Delphi XE2项目的所有源文件中自动删除用途部分中未使用的单元?
P.S. 在此之后,IDE将会更加快速。
无法完全自动化。
我知道有一些采用向导方式的工具:
Peganza的工具只是显示报告。 CnPack会提示您删除未使用的单元,但您必须确认操作。Lazarus向您显示了它认为未使用的单元列表,并让您选择删除其中的一些或全部。
为什么不能自动化?
因为这是静态分析。即使是最复杂的工具也不能以100%的确定性确定特定代码行是否将在运行时使用,更不用说整个单元。这些工具已经实现了自己的解析器来完成这项技术,但它们并非万无一失。
无论如何,清理uses子句的主要好处是从源代码和代码完成功能中消除视觉上的混乱。编译期间确实会获得一些性能增益,某些IDE后台操作也会略微加快速度,但如果您认为IDE会奇迹般地加速,您可能会感到失望。
通过以下方式可以看到更好的IDE和编译器性能:
我当然不是在劝阻您删除未使用的单元引用。正如我所说,它将有助于减少源代码中的混乱。只需确保出于正确的原因执行此操作。
不要认为我想要一个自动删除Uses部分中不必要单元的工具...
但是有一些工具可以识别它们...看看Icarus...这是一个免费软件,您可以在http://www.peganza.com/downloads.htm上获取。
像这样的对话框
,您可以选择要从使用列表中删除的文件并进行操作。它不是完全自动化的。由您选择和删除哪些文件。有了Icarus的报告,您将不得不手动完成所有工作,这很烦人(并且违反了在此问题中提出的“如何自动删除未使用的单元”的规定)。 - TLamaCnPack有一个名为“使用Cleaner…”的选项,我已经在单元测试基础上使用它而没有任何问题。它还能够处理整个项目——但由于项目大小的原因,我还没有尝试过。
#unuse Unit1
#unuse Unit2
#unuse Unit3
就是这样。它将删除使用语句中的单元,注意如果该单元是最后一个使用的单元,并且在该单元之后有分号。
CoInitialize
来设置 COM),即使在单位中没有任何其他被调用的部分。(是的,我知道你可以手动调用CoInitialize
;重点是你不能总是自动地了解单位可能正在做什么。) - Ken White