所以我最近开始使用Perl::Critic来检查我编写的代码的质量。我正在以残酷的模式运行它,并有一个建议,我不明白这是一个问题。输出是:
Return value of flagged function ignored - print at line 197, column 13. See pages 208,278 of PBP. (Severity: 1)
这基本上是对打印功能的调用,并带有一条输出到控制台的短消息。那么为什么我要捕获几乎肯定总是 1 的返回值,因为我想不出任何这不会是 1 的用例。
野蛮模式是不是“太野蛮”了?或者我错过了什么?我应该补充一点,我确实阅读了 PBP 的第 208 页和第 278 页,答案对我来说不清楚。
我同意大部分时间print都不会失败。但是,您可以通过创建一个.perlcriticrc文件并将这些行添加到其中来禁用此功能(就像我一样):
# Check all builtins except "print"
[InputOutput::RequireCheckedSyscalls]
functions = :builtins
exclude_functions = print
Run Code Online (Sandbox Code Playgroud)
这在Perl::Critic::Policy::InputOutput::RequireCheckedSyscalls 中有描述
此外,如果您不同意 Brutal 设置的所有政策,您可以只使用其他 4 个不那么残酷的设置之一。该工具是高度可配置的。
这是一个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";
Run Code Online (Sandbox Code Playgroud)
在这么短的代码中,很明显你只是关闭了文件句柄,然后你永远不会尝试打印到它。但是,如果您有很多(设计不佳的)代码,它可能会发生。
还有其他原因print可能会失败,例如如果另一个进程出现并删除了目录或禁用了对打开文件的写权限。
我为自己创建了一个要运行的脚本,perlcritic它可以轻松访问给定策略的 POD:排序和汇总 perlcritic 输出
| 归档时间: |
|
| 查看次数: |
242 次 |
| 最近记录: |