You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何从lcov.info排除freezed.dart与.g.dart文件

移除Flutter覆盖率报告中自动生成文件的正确方法

你的问题出在路径匹配规则和shell解析的问题上,之前的命令只匹配了lib下一级子目录的文件,没法覆盖所有层级的自动生成文件,调整命令就能解决:

完整操作步骤

  1. 生成原始覆盖率文件
flutter test --coverage
  1. 清理自动生成文件的覆盖率数据
    用**匹配任意层级的子目录,同时指定两种自动生成文件的后缀,生成清理后的覆盖率文件:
lcov --remove coverage/lcov.info 'lib/**/*.freezed.dart' 'lib/**/*.g.dart' -o coverage/lcov_cleaned.info
  1. 用清理后的文件生成报告
genhtml coverage/lcov_cleaned.info -o coverage/html
  1. 打开查看报告
open coverage/html/index.html

为什么之前的命令无效?

  • 你用的lib/*/*.freezed.dart只能匹配lib/子目录/xxx.freezed.dart这种结构,要是自动生成文件在更深的子目录或者直接放在lib根目录,就匹配不到;**可以匹配任意层级的子目录,能覆盖所有情况。
  • 多余的反斜杠转义会干扰shell对匹配模式的解析,直接用单引号包裹路径规则即可。

可选:覆盖原文件(不推荐,但方便后续步骤不变)

如果不想改后续命令的文件名,可以先生成临时文件再替换原文件:

lcov --remove coverage/lcov.info 'lib/**/*.freezed.dart' 'lib/**/*.g.dart' -o coverage/lcov.tmp && mv coverage/lcov.tmp coverage/lcov.info

之后直接用原来的genhtml命令即可。

内容的提问来源于stack exchange,提问作者Mohammed Niyaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:15:32