项目作者: woojean

项目描述 :
PHP Code Coverage Tool(一款基于xdebug实现的PHP代码覆盖率测试工具)
高级语言: PHP
项目地址: git://github.com/woojean/PHPCoverage.git
创建时间: 2016-06-21T16:17:24Z
项目社区:https://github.com/woojean/PHPCoverage

开源协议:

下载


PHPCoverage说明文档

PHPCoverage是一款基于xdebug实现的PHP代码覆盖率统计工具,可以方便地对PHP项目的代码覆盖率情况进行统计。

使用

PHPCoverage的使用非常简单,在下载了PHPCoverage的项目代码至本地后,只需在项目的主入口处(通常是项目的index.php文件的开头处)引用插桩文件,并添加插桩代码即可。

插桩代码的示例如下:

index.php文件开头处

  1. <?php
  2. // 引入插桩文件,例如我的本地PHPCoverage项目位置在:/vagrant/PHPCoverage处,则如下引用
  3. require_once '/vagrant/PHPCoverage/src/Woojean/PHPCoverage/Injecter.php';
  4. // 插桩
  5. Woojean\PHPCoverage\Injecter::Inject([
  6. 'log_dir'=>'/vagrant/logs',
  7. 'ignore_file'=>'/vagrant/PHPCoverage/demo/example.ignore',
  8. 'is_repeat' => true
  9. ]);
  10. // ...
参数说明:
log_dir

log_dir应该是一个PHP具有写权限的目录的路径(绝对路径),用于生成覆盖率统计文件及最终的覆盖率报告

ignore_file

ignore_file用于指定需要忽略掉的文件,比如第三方的代码、框架文件以及其他不想关注的文件。
该文件使用PHP数组描述,在PHPCoverage项目的ignores文件夹中包含一个示例文件example.ignore,内容如下:

  1. <?php
  2. return [
  3. "/vagrant/www/cbd_wechat/vendor",
  4. "/vagrant/www/cbd_wechat/library"
  5. ];
is_repeat

is_repeat可以指定为ture或false,用于控制是否进行叠加测试
当is_repeat为false时,将不进行叠加测试,这意味着每次开始执行测试之前,都会清空log_dir目录中的所有文件(即之前的测试记录)。
当is_repeat为true时,将进行叠加测试,这意味着多次测试生成的文件将会被保留,并最终进行合并分析。
如果想对单次PHP请求的代码覆盖率情况进行统计,应该将is_repeat设为false。
如果想要统计多次代码执行累计的代码覆盖率情况,则应该讲is_repeat设为true。
也可以手工清除log_dir中的内容以保证之前的测试结果不会被之后的测试一起统计。

报告说明:

当测试结束后,会在插桩时指定的log_dir目录下生成覆盖率统计文件和报告文件,其中index.html文件为报告的入口文件:

image

打开index.html文件后,内容如下:

image

文件顶部为本次测试的总体统计信息:

image

文件左侧为本次测试覆盖到的所有文件的列表(不含在ignore_file忽略的文件),点击文件列表中的任意文件,将在右侧展示该文件的覆盖情况。

其中灰色的行为不可执行代码:

image

其中淡黄色的行为可执行代码但未覆盖的代码:

image

绿色的行为被覆盖的可执行代码:

image

同时,在左侧文件列表中,针对不同的代码覆盖程度,也给出了不同颜色区分的标记:

image

通过Composer安装使用

Composer包名:

woojean/php-coverage

插桩代码的示例如下:

index.php文件开头处

  1. <?php
  2. // 插桩
  3. Woojean\PHPCoverage\Injecter::Inject([
  4. 'log_dir'=>'/vagrant/logs',
  5. 'ignore_file'=>'/vagrant/PHPCoverage/demo/example.ignore',
  6. 'is_repeat' => true
  7. ]);
  8. // ...

参数配置及说明见上文。