我注意到perlcritic
(Perl::Critic
)似乎并不关心if
语句中不匹配的parens,例如。但它似乎关心(在较低的严重性设置下)关于批次的事情。
对我来说,如果它甚至不能告诉我,我有一个简单的语法问题,如不匹配的parens,它似乎毫无用处。这是它的设计工作方式吗?
答案 0 :(得分:4)
是的,这就是Perl :: Critic的工作原理。
我不确定它是否是以这种方式明确设计的,而是编译Perl代码是如此微不足道甚至没有考虑过。它还不知道如何构建Perl代码,如果它需要设置任何库路径或诸如此类的东西,那么这将增加额外的配置复杂性。此外,编译Perl代码可以执行Perl代码,因此它成为安全问题。
但是,它无法在不编译的代码上正常运行。所以你最好在linting之前编译代码。
对于语法检查,您可以使用perl -c <your program>
。对于更系统的检查,您可以使用Test::Compile编写测试。把它放进t/00compile.t
。然后,您可以使用Test::Perl::Critic来测试您的代码是否违反了您的标准。将其放入t/00critic.t
,它将在编译检查后运行。