Coverde

用于基本覆盖跟踪文件操作的CLI。


安装

您可以通过执行以下命令使 coverde 在全局可用

$ dart pub global activate coverde

注意: 要直接从终端运行 coverde,请将系统缓存 bin 目录添加到您的 PATH 环境变量。


coverde check

检查从跟踪文件中计算出的覆盖率值。

参数

订单 描述 必需
唯一参数 一个介于0到100之间的整数,用作最低可接受覆盖率值。

选项

选项 描述 默认值
--input
-i
用于覆盖率检查的跟踪文件。 coverage/lcov.info

标志

国旗 描述 默认值
启用
--verbose
-v
禁用
--no-verbose
打印覆盖率值。 已启用

示例

  • coverde check 90
  • coverde check 75 -i lcov.info
  • coverde check 100 --no-verbose

结果

Check example (pass)

Check example (fail)

coverde filter

过滤跟踪文件中包含的已测试文件。

选项

选项 描述 默认值
--input
-i
要过滤的覆盖率跟踪文件。 coverage/lcov.info
--output
-o
过滤后的覆盖率跟踪文件(如果不存在,则自动创建)。 coverage/filtered.lcov.info
--filters
-f
一组用逗号分隔的模式,用于排除文件的覆盖率。
--mode
-m
生成过滤后跟踪文件的模式。
a:追加内容。
w:覆盖内容。
a (追加内容)

示例

  • coverde filter
  • coverde filter -f \.g\.dart
  • coverde filter -f \.freezed\.dart -mode w
  • coverde filter -o coverage/tracefile.info

coverde remove

删除一组文件和文件夹。

标志

国旗 描述 默认值
启用
--accept-absence
禁用
--no-accept-absence
根据文件/文件夹的存在情况设置命令行为。
如果启用,命令将继续并通知元素不存在。
如果禁用,命令将失败。
已启用

示例

  • coverde remove file.txt
  • coverde remove path/to/folder/
  • coverde remove path/to/another.file.txt path/to/another/folder/ local.folder/

coverde report

生成HTML覆盖率报告。

选项

选项 描述 默认值
--input
-i
用于报告生成的覆盖率跟踪文件。 coverage/lcov.info
--output
-o
生成报告文件将被放置的目标文件夹。 coverage/html/
--medium 覆盖率值的中间阈值。 75
--high 覆盖率值的高阈值。 90

报告样式根据个人、组和全局覆盖率以及 --medium--high 选项动态设置。

标志

国旗 描述 默认值
启用
--launch
-l
禁用
--no-launch
在默认浏览器中启动生成的报告。 禁用

示例

  • coverde report
  • coverde report -i coverage/tracefile.info --medium 50
  • coverde report -o coverage/report --high 95 -l

结果

Report example (directory)

Report example (file)

coverde value

从跟踪文件中计算并显示覆盖率值。

选项

选项 描述 默认值
--input
-i
用于覆盖率值计算的覆盖率跟踪文件。 coverage/lcov.info

标志

国旗 描述 默认值
启用
--verbose
-v
禁用
--no-verbose
打印跟踪文件包含的每个源文件的覆盖率值。 已启用

示例

  • coverde value
  • coverde value -i coverage/tracefile.info --no-verbose

melos 的用法

如果您的项目使用 melos 来管理其多包结构,则将测试覆盖率数据收集到统一的跟踪文件中可能会很有用。

这可以通过如下定义一个 melos 脚本来实现

M:
  description: Merge all packages coverage tracefiles ignoring data related to generated files.
  run: >
    coverde rm MELOS_ROOT_PATH/coverage/filtered.lcov.info &&
    melos exec --file-exists=coverage/lcov.info -- coverde filter --input ./coverage/lcov.info --output MELOS_ROOT_PATH/coverage/filtered.lcov.info --filters \.g\.dart

M 是 melos 脚本,它合并了项目中所有被测试包的覆盖率跟踪文件。

此 melos 脚本会忽略扩展名为 .g.dart 的生成源文件,但可以通过设置 --filters 选项来调整此行为。

生成的跟踪文件是位于项目根文件夹的 coverage 文件夹中的 filtered.lcov.info 文件。


CI 的覆盖率检查集成

如果您的项目在 CI 中使用 GitHub Actions,您可能已经知道 very_good_coverage,它提供了一种简单而有效的方法来进行覆盖率验证。

然而,在其他替代方案托管的 CI 工作流中添加覆盖率检查并不总是那么直接。

为了解决这个问题,在根据您的项目需求启用 Dart 或 Flutter 的 CI 工作流后,您可以通过将以下命令添加到工作流步骤来使用 coverde 及其 check 工具

  • dart pub global activate coverde
  • coverde check <min_coverage>

错误或请求

如果您遇到任何问题或认为 CLI 缺少某个功能,请随时在 GitHub 上打开一个 issue

也欢迎提交 Pull Request。请参阅 CONTRIBUTING.md

GitHub

查看 Github