Каковы некоторые инструменты покрытия кода для Perl?
Существуют ли хорошие (и желательно бесплатные) инструменты покрытия кода для Perl?
4 ответа
Да, Devel:: Cover - это путь.
Если вы разрабатываете модуль и используете Module:: Build для управления установкой, у вас даже есть testcover
цель:
perl Build.PL
./Build testcover
Он запускает весь набор тестов и составляет комбинированный отчет о покрытии в хорошем HTML, где вы можете просматривать свои модули и наблюдать за их покрытием.
Как уже отмечалось, Devel::Cover - ваш друг, но вы также захотите поискать его в Goo gle. Его документация немного скудна, и если вы радикально измените свою среду, вам придется переустановить ее, потому что она собирает Devel::Cover::Inc с кучей информации, извлеченной из вашей среды во время ее установки. Это вызвало множество проблем для нас на работе, поскольку у нас есть общая среда CPAN, и если один разработчик устанавливает Devel:: Cover, а другой разработчик пытается его запустить, странные (и неправильные) результаты являются общими.
Если вы используете этот модуль, также проверьте https://metacpan.org/pod/Devel::CoverX::Covered. Этот модуль будет захватывать большую часть информации, которую выбрасывает Devel:: Cover. Это очень удобно.
Мориц обсуждает, как модули, созданные с помощью Module::Build, могут легко использовать Devel::Cover.
Для модулей, использующих ExtUtils::MakeMaker, существует модуль расширения для вызова той же функциональности. Добавляем следующий код перед вызовом WriteMakefile ():
eval "use ExtUtils::MakeMaker::Coverage";
if( !$@ ) {
print "Adding testcover target\n";
}
... позволит запустить команду 'make testcover' и заставить Devel::Cover выполнять свою магию.