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链接,显示结果如下图所示:浅绿色为我们的测试代码覆盖到的,淡粉色为我们的测试代码没有覆盖到的
GitHub:https://github.com/fengbingchun/Messy_Test