-1

例如,我注意到perlcritic( Perl::Critic) 似乎并不关心if语句中不匹配的括号。但它似乎确实关心很多事情(在较低严重性设置下)。

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

4

1 回答 1

4

是的,这就是 Perl::Critic 的工作方式。

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

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

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

于 2013-05-05T20:22:09.120 回答