VeryGoodOpenSource/very_good_coverage

GitHub: VeryGoodOpenSource/very_good_coverage

一个用于解析 lcov 报告并在 GitHub Actions 中强制执行最低代码覆盖率阈值的 CI 工具。

Stars: 172 | Forks: 19

# 非常好的 Coverage [![Very Good Ventures](https://raw.githubusercontent.com/VGVentures/very_good_brand/main/styles/README/vgv_logo_black.png#gh-light-mode-only)][very_good_ventures_link_light] [![Very Good Ventures](https://raw.githubusercontent.com/VGVentures/very_good_brand/main/styles/README/vgv_logo_white.png#gh-dark-mode-onlyimages/vgv_logo_white.png#gh-dark-mode-only)][very_good_ventures_link_dark] [![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)][ci_badge_link] [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)][license_badge_link] 一个用于帮助强制执行最低代码覆盖率的 GitHub Action。 ## 迁移指南 通过将您的工作流步骤替换为该仓库中提供的可复用工作流,您可以从 `VeryGoodOpenSource/very_good_coverage` 迁移到 [Very Good Workflows][very_good_workflows_link]。 **之前:** ``` - name: Very Good Coverage uses: VeryGoodOpenSource/very_good_coverage@v2 with: path: '/coverage/lcov.info' min_coverage: 95 exclude: '**/*_observer.dart **/change.dart' ``` **之后:** ``` uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1 with: min_coverage: 95 coverage_excludes: '**/*_observer.dart **/change.dart' ``` 有关可用输入和工作流选项的完整列表,请参阅 [Very Good Workflows 文档][very_good_workflows_link]。 ## 输入项 Very Good Coverage 接受以下配置输入: | 输入项名称 | 描述 | 默认值 | 可选 | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | -------- | | path | lcov.info 文件的绝对路径。 | `"/coverage/lcov.info"` | ✅ | | min_coverage | 允许的最低覆盖率百分比。必须是 0 到 100 之间的数字。 | `100` | ✅ | | exclude | 要从覆盖率报告中排除的路径列表,以空格分隔。支持使用 [globs]() 来描述文件模式。 | `""` | ✅ | ## 示例用法 ``` uses: VeryGoodOpenSource/very_good_coverage@v2 with: path: '/coverage/lcov.info' min_coverage: 95 exclude: '**/*_observer.dart **/change.dart' ``` ## 常见问题 #### 如何避免 Very Good Coverage 报告为空或不存在的覆盖率文件? [相关问题](https://github.com/VeryGoodOpenSource/very_good_coverage/issues/167) 对于不存在的覆盖率文件导致的失败,可以通过将 path 输入项设置为已生成的 lcov 文件所在的路径来解决。 ``` uses: VeryGoodOpenSource/very_good_coverage@v2 with: path: 'my_project/coverage/lcov.info' ``` 如果您生成的 lcov 文件为空,这可能是因为您没有测试文件,或者您的测试没有生成任何覆盖率数据。 如果您希望始终绕过这些警告,我们建议您在工作流中使用条件语句,以避免在 lcov 文件为空或不存在时运行 Very Good Coverage action。 例如,如果您不存在或为空的覆盖率文件预计位于 `/coverage/lcov.info`,您可以这样做: ``` - name: Check for existing and non-empty coverage file id: test_coverage_file run: if [ -s "/coverage/lcov.info" ]; then echo "result=true" >> $GITHUB_OUTPUT ; else echo "result=false" >> $GITHUB_OUTPUT; fi - name: Very Good Coverage if: steps.test_coverage_file.outputs.result == 'true' uses: VeryGoodOpenSource/very_good_coverage@v2 with: path: '/coverage/lcov.info' ``` #### 为什么我的输入路径不是相对于指定的 `working-directory` 的? [相关问题](https://github.com/VeryGoodOpenSource/very_good_coverage/issues/35) 输入路径必须是绝对路径。指定的 working directory 会被输入路径忽略。这是因为从 action 中[无法](https://github.com/actions/runner/issues/467)访问 working directory。换句话说,Very Good Coverage 始终从您的仓库根目录运行。 例如,如果您的 working directory 是 `my_project`,而您的文件位于 `/my_project/coverage/lcov.info`,您必须这样做: ``` jobs: build: defaults: run: working-directory: my_project/ runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Very Good Coverage uses: VeryGoodOpenSource/very_good_coverage@v2 with: path: /my_project/coverage/lcov.info ```
标签:GitHub Action, SOC Prime, 代码覆盖率, 开发工具, 开源框架, 持续集成, 自定义脚本