Каковы некоторые инструменты покрытия кода для Perl? - PullRequest
18 голосов
/ 23 октября 2008

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

Ответы [ 4 ]

28 голосов
/ 23 октября 2008

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

24 голосов
/ 23 октября 2008

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

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

 perl Build.PL
 ./Build testcover

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

12 голосов
/ 24 октября 2008

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

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

5 голосов
/ 25 октября 2008

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

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

eval "use ExtUtils::MakeMaker::Coverage";
if( !$@ ) {
    print "Adding testcover target\n";
}

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

...