Perl 有没有好的(最好是免费的)代码覆盖工具?
4 回答
像往常一样,CPAN 是你的朋友:看看Devel::Cover
是的,Devel::Cover是要走的路。
如果你开发一个模块,并使用Module::Build来管理安装,你甚至有一个testcover
目标:
perl Build.PL
./Build testcover
它运行整个测试套件,并在漂亮的 HTML 中生成一个组合覆盖率报告,您可以在其中浏览您的模块并查看它们的覆盖率。
如前所述,Devel::Cover 是您的朋友,但您也需要在 google 上搜索它。它的文档有点稀疏,如果你彻底改变你的环境,你需要重新安装它,因为它构建了 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 发挥它的魔力。