代码覆盖率工具OpenCppCoverage在Windows上的使用

Posted fengbingchun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码覆盖率工具OpenCppCoverage在Windows上的使用相关的知识,希望对你有一定的参考价值。

      OpenCppCoverage是用在Windows C++上的开源的代码覆盖率工具,源码地址为https://github.com/OpenCppCoverage/OpenCppCoverage ,最新发布版本为0.9.9.0,License为GPL-3.0。

      从https://github.com/OpenCppCoverage/OpenCppCoverage/releases 下载OpenCppCoverageSetup-x64-0.9.9.0.exe ,并双击安装。

      OpenCppCoverage的主要用途是单元测试覆盖率。Features包括:

      (1).支持带有程序数据库文件(program database file, .pdb)的编译器;

      (2).只需使用OpenCppCoverage运行你的程序,无需重新编译你的应用程序;

      (3).网页报告;

      (4).line coverage;

      (5).作为Visual Studio插件运行:能用于生成与Visual Studio 2013, 2015和2017兼容的插件;

      (6).Jenkins支持;

      (7).支持优化构建;

      (8).排除(exclude)基于正则表达式的行;

      (9).子进程覆盖;

      (10).运行多个代码覆盖率并将它们合并到单个报表中.

      注意事项:

      (1).通过执行OpenCppCoverage.exe --help 可查看支持哪些输入参数

      (2).执行方式: OpenCppCoverage.exe [options] -- program_to_run optional_arguments

      (3).需要在Debug模式下执行;

      (4).--sources:指定需要进行测试覆盖率的源文件路径,后指定的源文件路径需要是绝对路径,不能有.或..,可出现多次;

      (5).--excluded_sources:指定不参与测试覆盖率的源文件路径,后指定的源文件路径需要是绝对路径,不能有.或..,可出现多次;

      (6).--export_type:指定结果文件输出的路径,如: --export_type html:E:\\test

      (7).执行完后,会生成一个新的目录名为CoverageReport-local time,如CoverageReport-2023-02-10-09h05m48s,双击打开此目录下的index.html即可查看代码覆盖情况.

      这里使用https://blog.csdn.net/fengbingchun/article/details/78825004 中的代码进行测试,执行命令如下图所示:

      双击打开CoverageReport-2023-02-11-13h39m08s目录下的index.html,结果如下图所示:

      然后,再点击链接"E:\\GitCode\\Messy_Test\\lib\\dbg\\x64_vc12\\Library.dll",结果如下图所示:因为我们测试的是对库Library的代码覆盖情况,这里显示的是sources时指定的路径,即生成Library库时所需要的源文件,这里只有两个library.hpp, library.cpp,如果有更多源文件,这里会显示更多,从此页面可看到我们的测试代码覆盖library中每个文件的覆盖情况

 

       如library.cpp,覆盖率为61%,可点击此library.cpp链接,显示结果如下图所示:浅绿色为我们的测试代码覆盖到的,淡粉色为我们的测试代码没有覆盖到的

       GitHubhttps://github.com/fengbingchun/Messy_Test

以上是关于代码覆盖率工具OpenCppCoverage在Windows上的使用的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 C++单元测试之gtest与OpenCppCoverage实践

LuatOS | 最新固件V0005发布,Cat.1/Nb-IoT/Wi-Fi全覆盖!!!

是否可以在没有代码覆盖率工具作为入口点的情况下收集代码覆盖率数据?

JAVA代码覆盖率工具JaCoCo

代码覆盖率工具 EMMA

iOS 代码覆盖率测试工具