有哪些适用于Perl的代码覆盖工具?

20

有没有适用于Perl的好用(最好是免费的)代码覆盖率工具?

4个回答

28

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


1
请不要链接到模块的特定版本。请尝试使用http://search.cpan.org/perldoc?Devel::Cover。 - cjm
我仍然认为在这种情况下,perldoc链接更好,因为它可以展示文档。但是讨论这些链接方法的优缺点的地方是http://stackoverflow.com/questions/43758/how-to-link-to-cpan-modules-in-answers。 - cjm
在这种情况下,我认为链接到发行版更合适,因为其中有大量的模块以及教程。 - Sherm Pendley

26

没错,Devel::Cover 是一个很好的选择。

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

 perl Build.PL
 ./Build testcover

运行整个测试套件,并生成漂亮的 HTML 组合覆盖率报告,你可以通过其中浏览你的模块并查看其覆盖率。


谢谢,我有点困惑,同一个问题在一天内收到了3个回复,其中两个几乎完全相同。 - FantomX1

12

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

如果你使用这个模块,还要查看 Devel::CoverX::Covered。该模块将捕获 Devel::Cover 抛弃的许多信息。非常方便。


5
Moritz谈到了如何使用Module::Build构建的模块轻松使用Devel::Cover。
对于使用ExtUtils::MakeMaker的模块,存在一个扩展模块来调用相同的功能。在调用WriteMakefile()之前添加以下代码:
eval "use ExtUtils::MakeMaker::Coverage";
if( !$@ ) {
    print "Adding testcover target\n";
}

使用这个命令可以让 Devel::Cover 发挥其神奇的作用:make testcover


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接