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

awm*_*oss 5 delphi

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

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

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

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

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

有关详细信息,请参见此处

Rob*_*edy 7

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

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

  • 拿它的地址.例如,`AssertEquals(nil,@ Foo)`.这不仅可以确保`Foo`链接到您的程序,还可以为您提供失败的单元测试,提醒您尚未完成测试. (5认同)