如何阻止ninja coverage-html排除指定FORTRAN文件?
解决Fortran代码库QCxMS覆盖率分析中文件被排除的问题
针对你遇到的ninja coverage-html大量排除.f90文件的问题,试试以下几个实操方向:
直接在meson配置阶段传递lcov规则
不要仅依赖.lcovrc,运行meson setup时通过参数强制指定lcov的包含规则,覆盖默认过滤逻辑:meson setup build -Db_coverage=true -Db_coverage_args='--include="**/*.f90"'修正.lcovrc的放置位置与匹配规则
meson执行coverage分析时默认在build目录下工作,把.lcovrc移到build目录根路径下,同时根据源文件实际路径调整匹配规则,比如源文件都在src/目录下就写:include = src/**/*.f90避免模糊的递归匹配因路径映射问题失效。
确保所有Fortran目标启用coverage编译选项
在项目根的meson.build里显式给Fortran目标添加coverage所需参数,防止部分子项目/目标漏配置:if get_option('b_coverage') add_project_arguments('-g', '-O0', '--coverage', language : 'fortran') endif手动执行lcov流程绕过ninja封装
如果上述方法都无效,直接跳过ninja的封装,手动完成覆盖分析:- 清理旧覆盖数据:
lcov --directory build --zerocounters - 运行所有测试用例生成覆盖数据
- 收集覆盖信息并指定包含规则:
lcov --directory build --capture --output-file coverage.info --include="**/*.f90" - 生成HTML报告:
genhtml coverage.info --output-directory coverage-html
- 清理旧覆盖数据:
内容的提问来源于stack exchange,提问作者tornikeo
相关产品推荐
相关产品推荐

