如何使用OpenCppCoverage生成包含指定所有源文件的全覆盖报告?
OpenCppCoverage 包含指定目录所有源文件的解决方案
方法一:使用--include_unloaded_sources参数(推荐)
如果你的OpenCppCoverage版本在v0.9.9.0及以上,直接在命令中添加该参数,就能强制将--sources指定目录下的所有源文件纳入报告,无论测试程序是否加载它们:
OpenCppCoverage --sources C:\src\MyApp\ --include_unloaded_sources -- .\x64\Debug\MyApp.Tests.exe
未被测试程序加载的文件会被标记为0%覆盖率,直接显示在报告里,方便你识别未覆盖的文件。
方法二:导出Cobertura格式后补全(兼容旧版本)
若你的OpenCppCoverage版本不支持上述参数,可通过导出XML报告后补全缺失文件:
- 先导出Cobertura格式的覆盖率报告:
OpenCppCoverage --sources C:\src\MyApp\ --export_type cobertura:coverage.xml -- .\x64\Debug\MyApp.Tests.exe
- 编写脚本(比如Python)遍历
C:\src\MyApp\下的所有.cpp、.h文件,对比coverage.xml中的文件列表,将未出现的文件手动添加到XML中,标记其覆盖率为0%。
核心逻辑:
- 遍历目标目录下的所有源文件
- 解析XML文件,检查每个源文件是否已存在
- 对缺失的文件,添加对应的
<class>和<line>节点,设置line-rate="0",所有行标记为未覆盖
注意事项
- 确认
--sources参数的路径准确,避免包含无关的外部目录 - 可通过
OpenCppCoverage --version命令查看当前版本,判断是否支持--include_unloaded_sources - 未被加载的文件在报告中会明确显示0%覆盖率,便于后续补充测试
内容的提问来源于stack exchange,提问作者DLT
相关产品推荐
相关产品推荐

