19

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

4

4 回答 4

28

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

于 2008-10-23T15:05:21.253 回答
25

是的,Devel::Cover是要走的路。

如果你开发一个模块,并使用Module::Build来管理安装,你甚至有一个testcover目标:

 perl Build.PL
 ./Build testcover

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

于 2008-10-23T15:20:51.317 回答
12

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

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

于 2008-10-24T07:23:52.713 回答
5

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

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

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

... 将允许运行命令“make testcover”并让 Devel::Cover 发挥它的魔力。

于 2008-10-25T08:59:47.297 回答