Как я могу запустить Test :: Perl :: Critic параллельно? - PullRequest
4 голосов
/ 29 октября 2009

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

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

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

Ответы [ 2 ]

3 голосов
/ 29 октября 2009

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

0 голосов
/ 18 ноября 2009

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

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

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

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

...