静态库(.lib)Visual Studio的代码覆盖范围
code coverage for static library(.lib) visual studio
我有一个静态库(.lib)。我的测试项目中的测试用例位于Visual Studio中,TCS是指许多静态库功能。测试用例有效,一切都很好。但是我无法获得内部代码的代码覆盖。有没有办法获得.lib的代码覆盖?
如果您具有静态库的源代码,则可以使用当前的测试项目来测试LIB中的功能。只需将您的测试项目与在Visual Studio中生成库的项目相结合。如果您没有源代码,则可以设计测试用例以执行此lib的黑盒测试。
我对我的工作做了很多实验,并且是观察结果。代码仪器在编译时起作用。意味着当编译代码时,也正在仪器。因此,对于基于GCC的仪器,--ftest-coverage
和--fprofile-arcs
标志在此处出现。汇编完成后链接静态库,因此没有得到仪器。由于没有得到仪器,因此没有生成数据。
因此,下一个逻辑步骤我还启动了库代码,对其进行了编译,然后从该乐器代码中生成了静态库。现在,正如我所理解的那样,静态库是使用称为ar
的应用程序工具制成的,在我的IDE中,该工具会自动使用.o
文件。以前是一个非仪器对象文件。现在,在仪器期望之后,静态库中的数据也应与库中的每个文件刷新。但这没有发生。这也意味着两件事之一1- .gcno文件也需要添加其或2-只有编译的文件才能生成配置文件数据。
现在,我下一步是修改这个静态库构建步骤,并进行了以下更改。我的原始行是ar rcs libmylib.a mylib.o
,我将其更改为ar rcs libmylib.a mylib.gcno
。基本上将GCNO文件包括在显然无法使用的静态库中。但仍然给它拍摄。
接下来我添加了 .o
和`gcno''都包含在静态库中。令人惊讶的是,应用程序没有错误,但没有生成配置文件数据。这使我相信,仅针对应用程序中编译的文件而不是链接的文件生成配置文件数据。
我进行的最后一次尝试是,而不是将其链接为静态库存档,而是将对象文件直接连接到应用程序中。mylib.o
。这已经是一个仪器的对象。但是,在链接时间再次添加了已经仪器的对象。因此,直到您的代码在编译时间中存在,该理论是从中生成的。
我不确定动态链接库。但是上面是我从我执行的实验中观察到的。
- 继承、覆盖和虚函数,以避免重复代码
- 在多个头文件中从接口声明被覆盖的函数时,如何避免重复代码?
- 为什么无法覆盖涉及第三方代码的模板类的运算符<<?
- 当存在覆盖歧义函数时,代码如何运行?
- 如何使用介子在C++中执行代码覆盖?
- lnk1114无法覆盖原始文件"xxx.lib",错误代码32
- 为什么这段代码说 C::f 覆盖 A::f 而不是 B::f?
- 如何在标题文件中获取成员功能的正确代码覆盖范围
- 在我的代码覆盖本身时遇到麻烦,我不确定为什么
- 在某些代码中覆盖方法的方式是什么?
- 从覆盖范围报告中删除自动生成的异常代码
- C++ 为什么我的覆盖代码 const int x = *(&y);工作?
- 静态库(.lib)Visual Studio的代码覆盖范围
- 在C 98,C 11交叉兼容代码中处理覆盖的优雅方法
- Visual Studio TDD Project的代码覆盖工具
- 内存将被代码中的溢出覆盖
- 代码覆盖范围结果:导出到Excel
- 使用Visual Studio对本机VSC++的gtest单元测试进行代码覆盖
- bullseye代码覆盖浏览器没有所有的源文件
- 代码覆盖变量,尽管它不应该