Каковы некоторые инструменты покрытия кода для Perl?

Существуют ли хорошие (и желательно бесплатные) инструменты покрытия кода для Perl?

4 ответа

Решение

Да, Devel:: Cover - это путь.

Если вы разрабатываете модуль и используете Module:: Build для управления установкой, у вас даже есть testcover цель:

 perl Build.PL
 ./Build testcover

Он запускает весь набор тестов и составляет комбинированный отчет о покрытии в хорошем HTML, где вы можете просматривать свои модули и наблюдать за их покрытием.

Как обычно, CPAN - ваш друг: посмотрите на Devel:: Cover

Как уже отмечалось, 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 выполнять свою магию.

Другие вопросы по тегам