我正在为Perl寻找一个lint,它可以捕获死代码和其他潜在问题。有什么建议吗?
我有
use strict;
use warnings;
已经但我想要更多。
答案 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。