Visual c++ 如何防止函数被排除在覆盖率分析之外?

Visual c++ 如何防止函数被排除在覆盖率分析之外?,visual-c++,code-coverage,aqtime,Visual C++,Code Coverage,Aqtime,我们正在使用AQTime的覆盖率分析器来检查单元测试的覆盖率结果。它似乎总体上工作正常,但有一个坏习惯,即高估覆盖率,因为有些函数根本没有出现。我认为这是因为链接器剥离了它们,因为它们没有被调用,但显然这并不理想,因为我希望它们显示为“未覆盖” 是否有人知道是否有一种方法来配置VisualC++或AQTime,以便这些函数被正确标记为“未覆盖”?< P>奇数。无论编译器/链接器是否剥离它们,事实是,在测试执行结束时,没有执行它们的记录。因此,如果该工具可以列出所有函数,它应该没有这样的证据,因此

我们正在使用AQTime的覆盖率分析器来检查单元测试的覆盖率结果。它似乎总体上工作正常,但有一个坏习惯,即高估覆盖率,因为有些函数根本没有出现。我认为这是因为链接器剥离了它们,因为它们没有被调用,但显然这并不理想,因为我希望它们显示为“未覆盖”


是否有人知道是否有一种方法来配置VisualC++或AQTime,以便这些函数被正确标记为“未覆盖”?

< P>奇数。无论编译器/链接器是否剥离它们,事实是,在测试执行结束时,没有执行它们的记录。因此,如果该工具可以列出所有函数,它应该没有这样的证据,因此它应该报告“未执行”


我们的工具并没有这种奇怪的行为,至少在您实际指定包含编译单元或头文件的编译单元或头文件是那些应该被检测的编译单元或头文件的一部分时没有。(您可能无法列出包含函数体的ah头文件,这样就不会报告该头文件)。它甚至会报告已经内联的函数已经执行,而不管它内联了多少个位置。

AQtime从模块的调试信息中获取例程列表。由于链接器剥离了一些例程,因此没有它们的调试信息,AQtime也不会“看到”它们


通常,所有链接器都有启用/禁用此功能的选项。例如,在VisualC++项目中,这个选项被命名为“强>引用链接器优化> <强>属性组中。在应用程序的Debug配置中删除此选项的值或将其设置为No(/OPT:NOREF),链接器将不会删除未使用的函数。该选项已记录在案。

非常感谢您的回答-听起来似乎非常理想。不幸的是,我已经离开了那份工作,在我目前的工作中,我再也无法访问Visual Studio的副本,也无法及时确认:(