使用lcov、genhtml生成覆盖率报告时无法读取Masonry头文件如何解决
解决方案
这个报错的核心原因是lcov生成的覆盖率记录文件中包含了第三方依赖Masonry的头文件路径,但你存放.gcno、.gcda的cover目录下没有同步存放Masonry的源码文件,导致genhtml生成可视化报告时无法读取对应文件。
你可以根据需求选择以下任意一种方案解决:
- 方案1(推荐):过滤第三方库覆盖率记录
在执行完lcov捕获命令、生成coverage.info后,新增一步过滤操作,移除所有Masonry相关的覆盖率条目,命令如下:
过滤完成后再执行genhtml命令生成报告即可。如果还有其他第三方库也触发同类报错,可以在命令中追加对应匹配规则,比如同时排除Pods目录的话可以写成:lcov --remove coverage.info '*/Masonry/*' -o coverage.infolcov --remove coverage.info '*/Masonry/*' '*/Pods/*' -o coverage.info - 方案2:仅捕获业务代码的覆盖率记录
你可以在最初执行lcov捕获命令时,通过--include参数限定仅统计你自己的业务代码路径,从根源上避免第三方库被纳入覆盖率统计,命令示例:
把命令中的lcov --capture --directory cover --output-file coverage.info --no-recursion --include '*/你的业务代码目录名/*'你的业务代码目录名替换为你实际存放业务代码的目录名即可。 - 方案3:补齐第三方库源码文件
如果你确实需要统计Masonry库的覆盖率,只需要把Masonry的源码文件放到报错提示的对应路径/Users/..../cover/Masonry/Masonry/下,再执行genhtml命令即可正常生成报告。
内容的提问来源于stack exchange,提问作者lauren1573
相关产品推荐
相关产品推荐

