Lint-подобная программа для Perl? - PullRequest
20 голосов
/ 26 июля 2011

Я ищу что-нибудь для Perl, которое могло бы отловить мертвый код и другие потенциальные проблемы. Есть предложения?

У меня есть

use strict;
use warnings;

уже, но я хотел бы иметь больше.

Ответы [ 4 ]

20 голосов
/ 26 июля 2011

Perl :: Critic ваш друг. Я использую Test :: Perl :: Critic и встраиваю его в авторские тесты моего кода

10 голосов
/ 27 июля 2011

Perl не имеет прямого эквивалента lint.Во многом это объясняется тем, что Perl не предоставляет так много способов повеситься, как Си.Базовая версия «lint» для Perl такова:

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

Это заставляет Perl компилировать (но не запускать) указанный файл с включенными ограничениями и предупреждениями.Вы можете использовать диагностику, если вам нужно больше подробных сообщений, или пропустить ее, если вам достаточно кратких.

Если вы хотите чего-то большего, попробуйте использовать Perl :: Critic , но помнитечто это на самом деле тоже не пух.lint в первую очередь касается ошибок (например, вещей, которые могут помешать компиляции, вызвать ошибки времени выполнения, быть непереносимыми, зависеть от неопределенного поведения и т. д.).Perl :: Critic больше ориентирован на применение стандартов кодирования .Хотя есть некоторые совпадения, они очень разные вещи.

5 голосов
/ 09 августа 2012

Использование 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
4 голосов
/ 25 ноября 2014

В дополнение к Perl :: Critic вы, возможно, захотите взглянуть на более новую Perl :: Lint .

...