Perl的Lint式程序?

时间:2011-07-26 19:10:22

标签: perl lint static-code-analysis

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

我有

use strict;
use warnings;

已经但我想要更多。

4 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:10)

Perl没有直接相当于lint。其中很大一部分原因是Perl没有提供像C一样多的方法来挂起自己。 Perl的“lint”的基本版本是:

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

这会导致perl在打开限制和警告的情况下编译(但不运行)指定的文件。如果您想要更详细的消息,可以使用诊断程序,如果简短的消息足够您可以将其留下来。

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:4)

除了Perl :: Critic,你可能还想看看更新的Perl::Lint