使用Gcov 6.0+Ceedling 0.31.1生成空白HTML报告问题求助
解决Ceedling + gcov生成空白HTML覆盖率报告的问题
核心问题分析
空白报告的直接原因是gcovr没有匹配到任何源文件,问题出在report_include的正则表达式配置上:
- 你当前使用的
^..Code/Src/*是错误的正则写法:^锚定路径开头,但..在正则中表示匹配任意两个字符(而非路径中的上级目录),*是正则量词(匹配前面的/零次或多次),完全无法正确匹配你的源文件路径。 - 之前的
..Code/*能工作是误打误撞,本质也是不符合正则规则的写法,后续环境或gcovr版本变化后就失效了。
修复方案
方案1:使用正则表达式(匹配准确路径)
如果你的源文件路径相对于Ceedling工作目录是../Code/Src/开头,修正正则表达式(注意转义路径中的.,避免被正则解释为任意字符):
:gcov: :reports: - HtmlDetailed :gcovr: :html_medium_threshold: 75 :html_high_threshold: 90 :report_include: "^\\.\\./Code/Src/.*"
方案2:使用Shell风格通配符(更直观)
改用report_include_glob配置(对应gcovr的--include-glob选项),用你熟悉的通配符语法匹配路径:
:gcov: :reports: - HtmlDetailed :gcovr: :html_medium_threshold: 75 :html_high_threshold: 90 :report_include_glob: "../Code/Src/**/*"
../Code/Src/**/*表示匹配../Code/Src目录下所有文件及子目录中的文件。
额外排查步骤
- 验证测试执行情况:先运行
ceedling test:all确保所有测试正常执行,没有测试的话不会生成任何覆盖率数据。 - 清理旧构建文件:执行
ceedling clean清理之前的构建产物和gcov数据,再重新生成报告,避免旧文件干扰。 - 检查路径正确性:在Ceedling工作目录下,执行
ls ../Code/Src/(或对应你的实际路径),确认源文件确实存在且路径正确。 - 查看gcovr日志:添加
--verbose参数运行Ceedling(ceedling gcov:all --verbose),查看gcovr的输出日志,确认是否有“未匹配到任何文件”的提示,进一步定位路径问题。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

