如何获取保留源码树结构、按文件夹分组的gcov覆盖率统计结果
保留目录树结构的gcov覆盖率统计方案
方案1:基于现有lcov实现目录树层级统计
lcov原生不直接输出树形结构,可通过以下方式适配:
- 第一步生成全量覆盖率原始数据文件:
lcov -c -d . -o coverage.info - 按指定层级过滤统计结果:比如要查看2级深度的目录统计,可执行
lcov --list coverage.info | grep -E '^src/[^/]+/?$|^src/[^/]+/[^/]+/?$'过滤对应深度的路径 - 树形结构输出可自行开发简单的辅助脚本:读取lcov的list输出结果,按路径分层,按各目录下总可覆盖行数、已覆盖行数加权计算父目录覆盖率(不要直接平均子目录数值,结果会失真),再按树形缩进打印即可得到你期望的展示效果。
方案2:切换gcovr工具原生支持树形层级展示
gcovr原生兼容gcov数据,直接支持目录树展示和自定义展开深度,更适合大体量项目使用:
- 安装命令:
pip install gcovr - 输出指定深度树形覆盖率的命令示例:
gcovr --root . --print-summary --show-directories --hierarchical-sort --depth 2
其中--depth参数可自定义展开层级:填1仅展示src级总覆盖率,填2展开到folder1/folder2层级,填3展开到subfolder层级,完全匹配你的需求 - 如需可视化报告,gcovr生成的HTML报告也支持点击展开/折叠不同层级目录,方便快速概览各模块覆盖度。
gcovr默认输出效果示例:
src/ 58% ├─ folder1/ 22% │ ├─ subfolder1/ 12% │ └─ subfolder2/ 39% └─ folder2/ 94% ├─ subfolder1/ 76% └─ subfolder2/ 100%
内容的提问来源于stack exchange,提问作者Big Bro
相关产品推荐
相关产品推荐

