Perl有没有好的(最好是免费的)代码覆盖工具?
像往常一样,CPAN是你的朋友:看看Devel :: Cover
是的,Devel :: Cover是要走的路.
如果你开发一个模块,并使用Module :: Build来管理安装,你甚至有一个testcover
目标:
perl Build.PL ./Build testcover
它运行整个测试套件,并以漂亮的HTML形式组合覆盖报告,您可以在其中浏览模块并查看其覆盖范围.
如上所述,Devel :: Cover是你的朋友,但你也想要谷歌.它的文档有点稀疏,如果你彻底改变你的环境,你需要重新安装它,因为它在你安装它时从你的环境中提取了一堆信息来构建Devel :: Cover :: Inc.这给我们带来了很多问题,因为我们有一个共享的CPAN环境,如果一个开发人员安装了Devel :: Cover而另一个开发人员试图运行它,那么奇怪的(和不正确的)结果很常见.
如果您使用此模块,还可以查看Devel :: CoverX :: Covered.该模块将捕获Devel :: Cover丢弃的大部分信息.这非常方便.
Moritz讨论了如何使用Module :: Build构建的模块可以轻松使用Devel :: Cover.
对于使用ExtUtils :: MakeMaker的模块,存在一个扩展模块来调用相同的功能.在调用WriteMakefile()之前添加以下代码:
eval "use ExtUtils::MakeMaker::Coverage"; if( !$@ ) { print "Adding testcover target\n"; }
...将允许一个人运行命令'make testcover'并让Devel :: Cover执行它的魔法.