Spike PHPCoverage
by circleoflife on 周二, 04/27/2010 - 16:22
这两天研究了一下php的code coverage工具。貌似php的code coverage工具并不是像java那么多,只找到了一个比较靠谱的Spike PHPCoverage,还是知道0.8版本,好久没有维护了。
不过总比没有强,就先研究了一下这个工具。
下载地址:http://developer.spikesource.com/frs/?group_id=9&release_id=104
总体来说看FAQ一步一步大体上可以搞定。需要Xdebug的支持。
分成了两个模式,一个是本地模式,就是写一些php类库,然后去调用,测试覆盖率,要求是一个调用过程,而不是那种在web server上的。另一个模式就支持web server上了。
主要研究了一下web server的覆盖率。大体说说我在使用过程中遇到的问题,大家可以少走弯路:
- 安装不说啥了,不难,下载好,配一下环境变量,然后装上xdebug就好了。
- 然后就是instrument过程,和大部分code coverage是一样的,进行代码注入,不过这里有很多需要注意的地方:
- 首先需要配置环境变量,建议直接在httpd.conf里面配置,在你的虚拟主机下面,加上一行:
SetEnv PHPCOVERAGE_HOME /path/to/your/coverage/path/ - 然后检查一下你的Php.ini和httpd.conf下面有没有open_basedir的限制,如果有,就加上你刚刚设置的变量的地址,不然会报找不到路径的错误,但是实际上已经找到了。
- 代码注入的时候,看一下FAQ也就明白了。使用命令"php /cli/instrument.php -b . file1.php file2.php"
- 注入之后,最好去目录下面看一下,在你的目录下面,应该增加了两个文件,phpcoverage.remote.top.inc.php和phpcoverage.remote.bottom.inc.php
- 另外一个一定要检查的地方,就是打开你注入的文件,会发现第一行和最后一行都有require_once这两个文件的迹象。
- 非常非常重要的一点:如果你是第一次注入,就忽略,如果不是,一定要删除这两个文件之后再注入,否则会出现以下状况:
- 运行测试的时候会非常慢
- Web会有很长的报错
- 覆盖率为0
- 首先需要配置环境变量,建议直接在httpd.conf里面配置,在你的虚拟主机下面,加上一行:
- Instruments之后,请到samples里面找到他的remote里面的例子,按照例子去修改自己的测试。
- 运行测试之后,要注意在你运行用例下面的report里面查看结果。其实直接看report.txt就可以看到大体结果,需要详细的,就去看html。
总结:
这个是我见到功能最少的代码覆盖率工具,只覆盖语句,报表也很简单。不过没有其他更好的工具前,可以尝试用一用。
- circleoflife's blog
- 要发表评论,请先登录 或 注册
标签云
感谢您关注我的个人博客!
为了您的更好的阅读和留言,建议您注册用户,这样您可以获得更大的权限,以及更方便的留言。
注册只需要一分钟的时间。但是您需要提供您的邮箱。注册后,密码会自动发到您的邮箱,请在第一次登录时修改。
我承诺不会将您的Email泄露给他人,或者发送垃圾邮件。