2009-10-28 3 views
4

Я написал простой тестовый пример на основе Test::Perl::Critic, который запускает critic на каждом исходном файле в репозитории (all_critic_ok). Однако этот тест занимает много времени, тем более что я также использую политику Perl::Tidy.Как я могу запустить Test :: Perl :: Critic параллельно?

Обычно критикуют разные файлы, не зависит от других критиков, поэтому я думал, что могу распараллелить эти тесты. Как оказалось, TAP::Harness действительно может распараллеливать тесты, но только по файловым, а не по тестовым.

Как бы вы распараллеливали эти тесты? Любое обходное решение будет выполнено.

ответ

3

Hack #68 в Perl Hacks имеет рецепт для проведения испытаний настойчиво, используя PersistentPerl. Возможно, вы сможете адаптировать его для этой цели.

0

Если у вас большое количество файлов, то создание нескольких тестовых скриптов Test :: Perl :: Critic может быть не такой плохой идеей. Например, у Perl-Critic есть три сценария Test :: Perl :: Critic: один для проверки кода приложения, один для тестового кода и другой для файлов * .run. И каждый из них использует несколько иной набор правил.

Так что, если вы можете разделить свой код как минимум на две логические группы и создать для них отдельные сценарии Test :: Perl :: Critic, то вы можете получить как минимум 2x улучшение производительности, запустив их параллельно с Tap :: Harness ,

Кроме того, вы можете активировать кеш PPI (см. Документацию Test :: Perl :: Critic для инструкций). Но это лишь улучшит производительность.

Если вы действительно заинтересованы в том, чтобы сделать Test :: Perl :: Critic действительно запускается параллельно, то вы можете вносить свой код. Вы можете зарегистрировать бит фиксации на http://perlcritic.tigris.org.

Смежные вопросы