23

我正在寻找 Perl 的 lint,它可以捕获死代码和其他潜在问题。有什么建议么?

我有

use strict;
use warnings;

已经,但我想要更多。

4

4 回答 4

20

Perl::Critic是你的朋友。我使用Test::Perl::Critic并将其构建到我的代码的作者测试中

于 2011-07-26T19:14:22.013 回答
14

Perl 没有直接等效于 lint 的方法。很大一部分原因是 Perl 没有提供像 C 那样多的方法来吊死自己。Perl 的“lint”的基本版本是这样的:

perl -Mstrict [-Mdiagnostics] -cw <file>

这会导致 perl 编译(但不运行)指定的文件,并打开限制和警告。如果您想要更详细的消息,则可以使用诊断,如果简洁的消息对您来说足够了,则可以将其排除在外。

如果您想要更多尝试使用Perl::Critic,但请注意这也不是真正的 lint。lint 主要关注错误(例如,会阻止编译、触发运行时错误、不可移植、依赖未定义行为等的事情)。Perl::Critic 更关注编码标准的执行。虽然有一些重叠,但它们是非常不同的东西。

于 2011-07-26T20:29:56.007 回答
5

使用B::Lint. O您可以通过调用带有 Lint 作为参数的模块在命令行上使用它,例如:

you@there:~/sandbox$ perl -MO=Lint Some.pm 
Implicit scalar context for array in logical and (&&) at Some.pm line 121
Implicit scalar context for array in conditional expression at Some.pm line 49
Implicit scalar context for array in logical and (&&) at Some.pm line 132
Some.pm syntax OK
于 2012-08-09T08:07:17.003 回答
4

除了 Perl::Critic 之外,您可能还想查看更新的Perl::Lint

于 2014-11-25T18:03:31.470 回答