vstelmakh/covelyzer

用于分析 clover 格式的 PHPUnit 测试覆盖率报告的工具

v0.2.0 2020-10-15 18:07 UTC

This package is auto-updated.

Last update: 2024-09-16 02:43:00 UTC


README

Build status Packagist version PHP version License

Covelyzer - 用于分析 clover (XML) 格式的 PHPUnit 测试覆盖率报告的 PHP 控制台工具。Covelyzer 将覆盖率指标直接集成到工作流程中,强制开发人员编写测试,并禁止提交未覆盖的代码。

亮点

  • 在控制台运行
  • 易于集成
  • 灵活的配置
  • 本地和 CI 环境中相同的配置
  • 不依赖于第三方服务

安装

使用 Composer 安装最新版本

composer require --dev vstelmakh/covelyzer

用法

在开始之前,使用选项运行测试,以生成 XML 格式的覆盖率报告。请参阅相应的 PHPUnit 文档参考 代码覆盖率分析 和 Covelyzer phpunit.xmlcomposer.json 脚本部分作为示例。

使用 Xdebug 运行带有 XML 覆盖率的测试示例

vendor/bin/phpunit --dump-xdebug-filter var/xdebug-filter.php && \
vendor/bin/phpunit --prepend var/xdebug-filter.php --coverage-clover var/coverage.xml --whitelist src

使用 默认配置 运行 Covelyzer

vendor/bin/covelyzer var/coverage.xml

要指定附加配置,请参阅 配置

配置

配置定义在位于项目根目录下(vendor 目录所在位置)的 covelyzer.xml 中。或者可以通过 -c | --config 命令选项覆盖配置路径

vendor/bin/covelyzer var/coverage.xml -c path/to/covelyzer.xml

如果没有提供配置文件,则使用 默认配置

示例配置

<?xml version="1.0" encoding="UTF-8" ?>
<covelyzer
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="vendor/vstelmakh/covelyzer/resources/config.xsd"
    timezone="Europe/Berlin"
>
    <project minCoverage="100"/>
    <class minCoverage="100"/>
</covelyzer>

<covelyzer> 元素

配置根元素。

timezone 属性

用于显示时间戳的时间区域。

  • 使用:可选
  • 类型:字符串(见:php 时间区域
  • 命令选项:可以通过 --timezone 命令选项定义/覆盖

<project> 元素

定义项目覆盖率报告的配置。如果定义了项目覆盖率报告,则将渲染报告。

  • 父元素:<covelyzer>
  • 使用:可选
minCoverage 属性

最小覆盖率值。如果项目覆盖率较低,则报告将失败。

  • 使用:必需
  • 类型:浮点数(最小:0,最大:100)

<class> 元素

定义类覆盖率报告的配置。如果定义了类覆盖率报告,则将渲染报告。

  • 父元素:<covelyzer>
  • 使用:可选
minCoverage 属性

最小覆盖率值。如果任何类的覆盖率较低,则报告将失败。

  • 使用:必需
  • 类型:浮点数(最小:0,最大:100)

技巧与技巧

使用帮助选项

使用 -h | --help 命令选项来显示 Covelyzer 帮助数据。它包含所有可用参数、选项和用法示例。

vendor/bin/covelyzer --help

忽略代码块

Covelyzer 将分析由 PHPUnit 生成的完整报告。在某些情况下,您可能希望忽略某些代码部分,以便不将其考虑在内。有多种选项可供选择,请参阅 PHPUnit 文档中的 忽略代码块

使用 Xdebug 加快覆盖率

使用Xdebug进行代码覆盖率数据收集的性能可以通过将白名单过滤委托给Xdebug来提高。请参阅相应的PHPUnit文档部分:使用Xdebug加速代码覆盖率

致谢

Volodymyr Stelmakh
许可协议为MIT许可证。更多信息请参阅LICENSE