Flutter覆盖视图插件coverde的使用
Flutter覆盖视图插件coverde的使用
coverde
是一个用于基本覆盖率跟踪文件操作的命令行工具。以下是如何在项目中使用 coverde
的详细说明。
安装
你可以通过执行以下命令全局安装 coverde
:
$ dart pub global activate coverde
注意: 若要直接从终端运行 coverde
,请将系统缓存 bin
目录添加到你的 PATH
环境变量中。
功能
coverde check
检查从跟踪文件计算出的覆盖率值。
选项
--input
|-i
覆盖率检查所用的跟踪文件。 默认值:coverage/lcov.info
标志
--verbose
|-v
是否打印覆盖率值。 使用--no-verbose
可禁用此标志。 默认值: 启用
参数
<min_coverage>
一个介于0和100之间的整数,用作最小可接受覆盖率值。 此值是必需的。
示例
coverde check 90
coverde check -i lcov.info 75
coverde check 100 --no-verbose
结果
coverde filter
过滤跟踪文件中包含的测试文件。
选项
-
--input
|-i
需要过滤的覆盖率跟踪文件。 默认值:coverage/lcov.info
-
--output
|-o
过滤后的覆盖率跟踪文件(如果不存在则自动生成)。 默认值:coverage/filtered.lcov.info
-
--paths-parent
|-p
过滤后路径的前缀。 默认值: 无 -
--filters
|-f
一组逗号分隔的模式,表示要排除在覆盖率之外的文件。 默认值: 无 -
--mode
|-m
过滤后跟踪文件内容应生成的模式。a
: 追加内容。w
: 覆盖内容。 默认值:a
(追加内容)
示例
coverde filter
coverde filter -f '\.g\.dart'
coverde filter -f '\.freezed\.dart' -mode w
coverde filter -f generated -mode a
coverde filter -o coverage/trace-file.info
coverde remove
删除一组文件和文件夹。
标志
--accept-absence
指定命令的行为根据文件/文件夹的存在情况。 如果启用,命令将继续并通知元素缺失。 如果禁用,命令失败。 使用--no-accept-absence
可禁用此标志。 默认值: 启用
参数
<paths>
需要删除的一组路径。 多个路径可以通过空格分隔。 此值是必需的。
示例
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/trace-file.info --medium 50
coverde report -o coverage/report --high 95 -l
结果
coverde value
计算并显示从跟踪文件得出的覆盖率值。
选项
--input
|-i
用于覆盖率值计算的覆盖率跟踪文件。 默认值:coverage/lcov.info
标志
--verbose
|-v
是否为跟踪文件中引用的每个源文件打印覆盖率值。 使用--no-verbose
可禁用此标志。 默认值: 启用
示例
coverde value
coverde value -i coverage/trace-file.info --no-verbose
与 melos
的使用
如果你的项目使用 melos
来管理多包结构,可以使用 coverde
在统一的跟踪文件中收集测试覆盖率数据。
定义如下 melos
脚本:
merge-trace-files:
description: 合并所有包的覆盖率跟踪文件,忽略生成文件的数据。
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 --paths-parent MELOS_PACKAGE_PATH --filters '\.g\.dart'"
merge-trace-files
是合并所有测试包覆盖率跟踪文件的 melos
脚本。
首先,脚本会移除项目根目录下 coverage
文件夹中的 filtered.lcov.info
文件(如果存在)。
然后,脚本会对每个包含 coverage/lcov.info
文件的包执行 coverde filter
命令,使用其内容作为输入,将结果写入项目根目录下的 filtered.lcov.info
文件。
过滤后的跟踪文件忽略了带有 .g.dart
扩展名的生成文件的数据。
每个引用的文件路径都以包路径为前缀,因此生成的合并跟踪文件包含了一组表示实际项目结构的路径,这对于 coverde report
命令正确生成HTML报告至关重要。
CI 集成中的覆盖率检查
如果你的项目使用 GitHub Actions 进行 CI,你可能已经知道 very_good_coverage
,它提供了一种简单但有效的覆盖率验证方法。
然而,向其他 CI 工作流程添加覆盖率检查并不总是那么简单。
为了解决这个问题,在启用 Dart 或 Flutter 的 CI 流程后,根据项目需求,可以添加以下命令到工作流程步骤中:
dart pub global activate coverde
coverde check <min_coverage>
更多关于Flutter覆盖视图插件coverde的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html