4

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

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

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

4

2 回答 2

3

Perl Hacks中的Hack #68有一个使用PersistentPerl 持久运行测试的秘诀。您也许可以为此目的对其进行调整。

于 2009-10-28T23:48:43.647 回答
1

如果您有大量文件,那么创建多个 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注册提交位。

于 2009-11-18T19:48:20.683 回答