2013-05-05 4 views
-1

Я заметил, что perlcritic (Perl::Critic), по-видимому, не заботится о несогласованных паранах в операциях if. Но, похоже, он заботится (о более низких настройках) о лот вещей.perlcritic: не подтверждает синтаксис

Мне кажется бесполезным, если он даже не может сказать мне, что у меня есть простая проблема синтаксиса, такая как несогласованные парады. Так ли оно работает?

+1

'perl -c script.pl' проведет проверку синтаксиса. Не уверен, почему «Perl :: Critic» будет дублировать это. – Andomar

+3

'perl -c' может уведомлять вас о проблемах с синтаксисом. 'perlcritic' - это программа lint, а не компилятор. – jordanm

+0

'perl -c' имеет« [уязвимость] (https://github.com/SublimeLinter/SublimeLinter/issues/77) » –

ответ

4

Да, вот как Perl :: Критик работает.

Я не уверен, что он был явно разработан таким образом, но компиляция Perl-кода настолько тривиальна, что его даже не рассматривали. Он также не знает, как создать свой код Perl, если ему нужно установить любые пути к библиотеке или еще что-то еще, чтобы добавить дополнительную сложность конфигурации. Кроме того, компиляция Perl-кода может выполнять Perl-код, поэтому он становится проблемой безопасности.

Однако он не может корректно работать с кодом, который не компилируется. Поэтому лучше всего скомпилировать код перед линией.

Для проверки синтаксиса вы можете использовать perl -c <your program>. Для более систематических проверок вы можете написать тест, используя Test::Compile. Поместите его в t/00compile.t. Затем вы можете использовать Test::Perl::Critic для тестирования кода, который не нарушает ваши стандарты. Поместите это в t/00critic.t, и он будет запущен после проверки компиляции.

+0

Опция 'perl -c ...' - отличная идея. Другим трюком, который может привести к несовпадению спаривания, является «perltidy». FWIW: Мой редактор настроен для запуска как 'perl -c ...', так и Perl :: Critic', когда я немного приостанавливаюсь. – tjd

Смежные вопросы