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

Есть ли какие-либо хорошие (и, желательно, бесплатные) инструменты для покрытия кода для Perl?

Ответы

Ответ 1

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

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

 perl Build.PL
 ./Build testcover

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

Ответ 2

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

Ответ 3

Как уже отмечалось, Devel:: Cover - ваш друг, но вы тоже захотите его сделать. Документация немного редка, и если вы радикально измените свою среду, вам нужно будет переустановить ее, потому что она создает Devel:: Cover:: Inc с кучей информации, вытащенной из вашей среды во время ее установки. Это вызвало множество проблем для нас, поскольку у нас есть общая среда CPAN, и если один разработчик устанавливает Devel:: Cover, а другой разработчик пытается ее запустить, обычные (и неправильные) результаты являются общими.

Если вы используете этот модуль, также проверьте Devel:: CoverX:: Covered. Этот модуль захватит большую часть информации, которую Devel:: Cover выбрасывает. Это очень удобно.

Ответ 4

Мориц обсуждает, как модули, построенные с помощью модуля:: Build, могут легко использовать Devel:: Cover.

Для модулей, использующих ExtUtils:: MakeMaker, существует модуль расширения для вызова той же функциональности. Добавление следующего кода перед вызовом WriteMakefile():

eval "use ExtUtils::MakeMaker::Coverage";
if( [email protected] ) {
    print "Adding testcover target\n";
}

... позволит запустить команду "make testcover" и запустить Devel:: Cover свою магию.