Perl :: Крити c в брутальном режиме - PullRequest
3 голосов
/ 26 апреля 2020

Итак, я недавно начал использовать Perl::Critic для проверки качества написанного мной кода. Я запускаю его в брутальном режиме, и у меня есть одно предложение, которое я не понимаю как проблема. Вывод:

Return value of flagged function ignored - print at line 197, column 13. See pages 208,278 of PBP. (Severity: 1)

Это в основном вызов функции печати с коротким сообщением, которое выводится на консоль. Почему тогда я должен фиксировать возвращаемое значение, которое почти наверняка всегда будет равно 1, поскольку я не могу вспомнить ни одного варианта использования, где это не было бы 1.

Является ли брутальный режим «слишком брутальным»? Или я что-то упустил? Я должен добавить, что я прочитал страницы 208 и 278 PBP, и ответ мне не ясен.

Ответы [ 2 ]

6 голосов
/ 26 апреля 2020

Я согласен, что большую часть времени print не подведет. Но вы можете отключить эту функцию, создав файл .perlcriticrc и добавив в него следующие строки (как я):

# Check all builtins except "print"
[InputOutput::RequireCheckedSyscalls]
functions = :builtins
exclude_functions = print

Это описано в Perl :: Criti c :: Policy :: InputOutput :: RequireCheckedSyscalls

Кроме того, если вы не согласны со всеми политиками параметра Brutal, вы можете просто использовать один из четырех других менее жестоких параметров. Инструмент легко настраивается.

Вот тривиальный случай, когда print может потерпеть неудачу (печать в закрытый файловый дескриптор):

open my $fh, '>', 'out';
print $fh "555\n";
close $fh;
print $fh "888\n" or die "print failed: $!";

# we shouldn't get here
print "777\n";

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

Есть и другие причины, по которым print может завершиться неудачей, например, если другой процесс пришел и удалил каталог, или отключил права на запись в вашем открытом файле.

Я создал для себя скрипт для запуска perlcritic, который облегчает доступ к POD для заданной политики: Сортировка и обобщение perlcriti c output

0 голосов
/ 26 апреля 2020

Один случай использования, когда print "something"; завершается неудачей, - это когда STDOUT был открыт для файла и файловая система заполнена. Но в моих проектах я также не проверяю возвращаемое значение print.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...