perlcritic:不验证语法

时间:2013-05-05 18:45:12

标签: perl

我注意到perlcriticPerl::Critic)似乎并不关心if语句中不匹配的parens,例如。但它似乎关心(在较低的严重性设置下)关于批次的事情。

对我来说,如果它甚至不能告诉我,我有一个简单的语法问题,如不匹配的parens,它似乎毫无用处。这是它的设计工作方式吗?

1 个答案:

答案 0 :(得分:4)

是的,这就是Perl :: Critic的工作原理。

我不确定它是否是以这种方式明确设计的,而是编译Perl代码是如此微不足道甚至没有考虑过。它还不知道如何构建Perl代码,如果它需要设置任何库路径或诸如此类的东西,那么这将增加额外的配置复杂性。此外,编译Perl代码可以执行Perl代码,因此它成为安全问题。

但是,它无法在不编译的代码上正常运行。所以你最好在linting之前编译代码。

对于语法检查,您可以使用perl -c <your program>。对于更系统的检查,您可以使用Test::Compile编写测试。把它放进t/00compile.t。然后,您可以使用Test::Perl::Critic来测试您的代码是否违反了您的标准。将其放入t/00critic.t,它将在编译检查后运行。