Каковы некоторые инструменты покрытия кода для Perl?
-
04-07-2019 - |
Вопрос
Существуют ли какие-либо хорошие (и желательно бесплатные) инструменты покрытия кода для Perl?
Решение
Да, Devel :: Cover - это то, что нужно.
Если вы разрабатываете модуль и используете Module :: Build для управления установкой у вас даже есть цель testcover
:
perl Build.PL
./Build testcover
Он запускает весь набор тестов и создает комбинированный отчет о покрытии в прекрасном HTML, где вы можете просматривать свои модули и просматривать их покрытие.
Другие советы
Как обычно, CPAN - ваш друг: посмотрите Devel :: Cover р>
Как уже отмечалось, Devel :: Cover - ваш друг, но вы также захотите поискать его в Google. Его документация немного скудна, и если вы радикально измените свою среду, вам придется переустановить ее, потому что она собирает Devel :: Cover :: Inc с кучей информации, извлеченной из вашей среды во время ее установки. Это вызвало множество проблем для нас на работе, поскольку у нас есть общая среда CPAN, и если один разработчик устанавливает Devel :: Cover, а другой разработчик пытается ее запустить, странные (и неправильные) результаты являются общими.
Если вы используете этот модуль, также ознакомьтесь с 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 выполнять свою магию.