friends-of-phpspec/phpspec-code-coverage

为 PhpSpec 测试生成代码覆盖率报告

v6.4.1 2024-08-12 13:32 UTC

README

Latest Stable Version GitHub stars Total Downloads GitHub Workflow Status Scrutinizer code quality License

phpspec-code-coverage

phpspec-code-coverage是一个PhpSpec扩展,用于生成PhpSpec测试的代码覆盖率报告。

生成代码覆盖率报告可以让你分析代码库中哪些部分被测试以及测试效果如何。然而,代码覆盖率本身不应该作为衡量测试质量的一个唯一指标。

phpspec-code-coverage console report phpspec-code-coverage HTML report

要求

兼容性

变更日志

请参阅CHANGELOG.md获取最近更改的信息。

安装

将此软件包作为项目的开发依赖项安装

$ composer require --dev friends-of-phpspec/phpspec-code-coverage

通过编辑项目中的phpspec.yml文件来启用扩展

extensions:
  FriendsOfPhpSpec\PhpSpec\CodeCoverage\CodeCoverageExtension: ~

这将足以通过使用扩展提供的默认设置启用代码覆盖率生成。此扩展支持各种配置选项。要查看一个完全注释的示例配置文件,请参阅配置部分

用法

如果您执行phpspec run命令,您将在coverage目录(以html格式)中看到生成的代码覆盖率。

$ bin/phpspec run

注意!在生成代码覆盖率报告时,请确保PHP进程通过CLI运行时没有内存限制(即在/etc/php/cli/php.ini中将memory_limit设置为-1)。

使用phpdbg运行

此扩展现在支持phpdbg,当使用较新的PHP版本时,这将导致执行速度更快。通过phpdbg运行phpspec

$ phpdbg -qrr phpspec run

注意!使用phpdbg进行代码生成时,需要PHP 7+。

配置

以下是一个完全注释的phpspec.yml示例文件,可以作为进一步自定义扩展默认设置的起点。下面的配置文件包含所有配置选项

# phpspec.yml
# ...
extensions:
  # ... other extensions ...
  # friends-of-phpspec/phpspec-code-coverage
  FriendsOfPhpSpec\PhpSpec\CodeCoverage\CodeCoverageExtension:
    # Specify a list of formats in which code coverage report should be
    # generated.
    # Default: [html]
    format:
      - text
      - html
      #- clover
      #- php
      #- xml
      #- cobertura
    #
    # Specify output file/directory where code coverage report will be
    # generated. You can configure different output file/directory per
    # enabled format.
    # Default: coverage
    output:
      html: coverage
      #clover: coverage.xml
      #php: coverage.php
      #xml: coverage
      #cobertura: cobertura.xml
    #
    # Should uncovered files be included in the reports?
    # Default: true
    #show_uncovered_files: true
    #
    # Set lower upper bound for code coverage
    # Default: 35
    #lower_upper_bound: 35
    #
    # Set high lower bound for code coverage
    # Default: 70
    #high_lower_bound: 70
    #
    # Whilelist directories for which code generation should be done
    # Default: [src, lib]
    #
    # Should text output show only summary?
    # Default: false
    #show_only_summary: true
    #
    whitelist:
      - src
      - lib
      # or to apply filtering on files names
      #- directory: src
      #  suffix: "Controller.php"
      #  prefix: "Get"
    #
    # Whiltelist files for which code generation should be done
    # Default: empty
    #whilelist_files:
      #- app/bootstrap.php
      #- web/index.php
    #
    # Blacklist directories for which code generation should NOT be done
    #blacklist:
      #- src/legacy
      # or to apply filtering on files names
      #- directory: src/legacy
      #  suffix: "Spec.php"
      #  prefix: "Test"
    #
    # Blacklist files for which code generation should NOT be done
    #blacklist_files:
      #- lib/bootstrap.php

选项

  • format(可选):生成代码覆盖率时应使用的格式列表。可以是以下之一:clovercoberturacrap4jphptexthtmlxml(默认html注意:当使用clover格式选项时,您必须为clover格式配置特定的output文件(见下文)。
  • output(可选):为特定代码覆盖率格式设置输出文件/目录。如果您配置了多个格式,则采用format:output的哈希(例如clover:coverage.xml)(默认coverage
  • show_only_summary(可选)用于在文本报告中只显示摘要(默认 false
  • show_uncovered_files(可选)用于在覆盖率报告中包含未覆盖的文件(默认 true
  • lower_upper_bound(可选)设置代码覆盖率的上限(默认 35
  • high_lower_bound(可选)设置代码覆盖率的高下限(默认 70
  • whitelist 接受一个目录白名单数组(默认:libsrc)。如果提供了一个具有以下键的关联数组,则数组可以更加具体(directoryprefixsuffix
  • whitelist_files 接受一个文件白名单数组(默认:无)
  • blacklist 接受一个目录黑名单数组(默认:testvendorspec)。如果提供了一个具有以下键的关联数组,则数组可以更加具体(directoryprefixsuffix
  • blacklist_files 接受一个文件黑名单数组

作者

版权所有(c)2017-2018 ek9 [email protected] (https://ek9.co)。

版权所有(c)2013-2016 Henrik Bjornskov,部分代码来自 henrikbjorn/phpspec-code-coverage 项目。

许可证

MIT 许可证 下许可。