基于 php-code-coverage 的增量代码覆盖率实现
实现说明
环境依赖
xdebug: php 插件,用于收集覆盖率信息 1. git: 利用 git diff 获取增量代码信息 1. php-code-coverage: phpunit 下的一个库,用于从 xdebug 收集的覆盖率信息中生成覆盖率统计报告,支持 xml、html 等多种格式。本文基于 6.0.7 改造以支持增量覆盖率统计,利用 1.和 2.中获取的信息生成增量覆盖率统计报告
具体实现说明如下:
xdebug 安装首先下载插件,xdebug 官方下载地址:http://xdebug.org.cn/download.php。然后根据操作系统的差异,windows根据当前系统位数、php版本以及是否线程安全,下载编译好的.dll文件;linux系统则需要下载源码后使用phpize编译成.so文件然后在php.ini文件中指明插件的位置,并启用覆盖率收集功能如下所示:
使用 php -m, 回显结果中出现 Xdebug,则表示安装成功
2.覆盖率信息收集
在项目入口文件中通过检查传入系是否存在 trigger,来决定是否启动覆盖率信息收集,以常见的 nginx+php 项目举例实现方式如下:
通过 php.ini 的 auto_prepend_file 配置加载覆盖率收集文件 1. 通过 nginx 检查 cookie 中是否存在 trigger,来决定是否通过 fastcgi_param 向 php 传递 trigger(随意命名,比如 XDEBUG_COVERAGE_START)1. php 的 auto_prepend_file 的 $_SERVER 中如果检查到存在 trigger,则开启覆盖率收集
3.增量代码信息获取
更多学习资料点击下方
评论