有没有适用于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 抛弃的许多信息。非常方便。
eval "use ExtUtils::MakeMaker::Coverage";
if( !$@ ) {
print "Adding testcover target\n";
}
使用这个命令可以让 Devel::Cover 发挥其神奇的作用:make testcover