有没有办法强制Delphi在可执行文件中留下未使用的代码?

时间:2011-10-20 01:44:10

标签: delphi

Delphi链接器删除任何实际未使用的函数,从而减少可执行文件的大小。

有没有办法阻止Delphi Linker这样做?例如编译器开关?

那些想知道“为什么?”的人......

我正在尝试使用delphi-code-coverage tool,但它只报告实际编译到可执行文件中的代码。这使它不是很有用。如果我能让Delphi包含所有代码,我希望我能得到一些有用的代码覆盖率统计数据。

我应该提一下,我在我的应用程序的单独项目中进行了DUnit测试。因此,即使代码在DUnit项目中“未使用”, 也会在实际应用程序中使用。

有关详细信息,请参阅here

1 个答案:

答案 0 :(得分:7)

您的代码覆盖工具正在测量错误的内容。它使用地图文件而不是源代码,因此它只会报告实时代码而不是项目中所有代码。链接器已经过滤掉 dead 代码,在空白的单元测试项目中,所有代码都是死代码。没有办法告诉Delphi在EXE中包含死代码。

在您的应用程序上运行代码覆盖率工具,以获取需要测试的功能列表。然后,在单元测试项目中编写代码,提及所有这些功能。 (它没有调用所有东西,它当然不需要测试它们。我们只是确保它与单元测试相关联现在,覆盖工具可以准确地测量已执行的内容和未执行的内容。