我如何并行运行Test :: Perl :: Critic?

时间:2009-10-28 23:11:17

标签: perl parallel-processing testing perl-critic

我编写了一个基于Test::Perl::Critic的简单测试用例,它在存储库中的每个源文件(critic)上运行all_critic_ok。但是,此测试需要很长时间,特别是因为我还使用了Perl::Tidy策略。

通常,批评不同的文件并不依赖于其他评论家,所以我认为我可以并行化这些测试。事实证明,TAP::Harness确实可以并行化测试,但只是文件方式,而不是测试方式。

您如何并行化这些测试?任何解决方法都可以。

2 个答案:

答案 0 :(得分:3)

Hack #68中的

Perl Hacks有一个使用PersistentPerl持续运行测试的方法。您可以为此目的进行调整。

答案 1 :(得分:0)

如果你有大量文件,那么创建多个Test :: Perl :: Critic测试脚本可能不是一个坏主意。例如,Perl-Critic本身有三个Test :: Perl :: Critic脚本:一个用于检查应用程序代码,一个用于测试代码,另一个用于* .run文件。并且每个都使用一组略有不同的规则。

因此,如果您可以将代码划分为至少两个逻辑组并为它们创建单独的Test :: Perl :: Critic脚本,那么通过与Tap :: Harness并行运行它们可以获得至少2倍的性能提升。

此外,您可以激活PPI缓存(有关说明,请参阅Test :: Perl :: Critic文档)。但这只会带来适度的性能提升。

如果您真的对使Test :: Perl :: Critic真正并行运行感兴趣,那么非常欢迎您贡献代码。您可以在http://perlcritic.tigris.org注册提交位。