2009-10-28 16 views
4

J'ai écrit un cas de test simple basé sur Test::Perl::Critic qui exécute critic sur chaque fichier source unique dans le référentiel (all_critic_ok). Cependant, ce test prend beaucoup de temps, d'autant plus que j'utilise aussi une politique Perl::Tidy.Comment exécuter Test :: Perl :: Critic en parallèle?

Normalement, la critique de différents fichiers ne dépend pas d'autres critiques, donc j'ai pensé que je pourrais paralléliser ces tests. Il se trouve que TAP::Harness peut en effet paralléliser les tests, mais seulement en ce qui concerne les fichiers, pas les tests.

Comment pourriez-vous paralléliser ces tests? Toute solution de contournement fera l'affaire.

Répondre

3

Hack #68 dans Perl Hacks a une recette pour exécuter des tests de façon persistante en utilisant PersistentPerl. Vous pourriez être en mesure de l'adapter à cette fin.

0

Si vous avez un grand nombre de fichiers, la création de plusieurs scripts de test Test :: Perl :: Critic n'est peut-être pas une si mauvaise idée. Par exemple, Perl-Critic a trois scripts Test :: Perl :: Critic: un pour vérifier le code de l'application, un pour le code de test et un autre pour les fichiers * .run. Et chacun d'eux utilise un ensemble de règles légèrement différent. Donc, si vous pouvez diviser votre code en au moins deux groupes logiques et créer des scripts séparés pour Test :: Perl :: Critic, vous pouvez obtenir au moins deux fois plus de performances en les exécutant en parallèle avec Tap :: Harness .

En outre, vous pouvez activer le cache PPI (voir la documentation Test :: Perl :: Critic pour les directions). Mais cela ne fera qu'une amélioration modeste des performances.

Si vous êtes vraiment intéressé à faire en sorte que Test :: Perl :: Critic fonctionne vraiment en parallèle, vous pouvez contribuer au code. Vous pouvez vous inscrire pour un bit de validation au http://perlcritic.tigris.org.