Perl有哪些代码覆盖工具?

时间:2008-10-23 14:58:56

标签: perl code-coverage cpan

Perl是否有任何好的(最好是免费的)代码覆盖工具?

4 个答案:

答案 0 :(得分:28)

像往常一样,CPAN是你的朋友:看看Devel::Cover

答案 1 :(得分:24)

是的,Devel::Cover是可行的方法。

如果您开发了一个模块,并使用Module::Build来管理安装,那么您甚至可以拥有testcover目标:

 perl Build.PL
 ./Build testcover

运行整个测试套件,并使用漂亮的HTML制作综合报道报告,您可以在其中浏览模块并查看其覆盖范围。

答案 2 :(得分:12)

如上所述,Devel :: Cover是你的朋友,但你也想要谷歌。它的文档有点稀疏,如果你彻底改变你的环境,你需要重新安装它,因为它在你安装它时从你的环境中提取了一堆信息来构建Devel :: Cover :: Inc。这给我们带来了很多问题,因为我们有一个共享的CPAN环境,如果一个开发人员安装Devel :: Cover而另一个开发人员试图运行它,那么奇怪的(和不正确的)结果很常见。

如果您使用此模块,请查看Devel::CoverX::Covered。该模块将捕获Devel :: Cover丢弃的大部分信息。它非常方便。

答案 3 :(得分:5)

Moritz讨论了如何使用Module :: Build构建的模块可以轻松地使用Devel :: Cover。

对于使用ExtUtils :: MakeMaker的模块,存在一个扩展模块来调用相同的功能。在调用WriteMakefile()之前添加以下代码:

eval "use ExtUtils::MakeMaker::Coverage";
if( !$@ ) {
    print "Adding testcover target\n";
}

...将允许一个人运行命令'make testcover'并让Devel :: Cover发挥其魔力。