2012-02-07 50 views
6

我想在一个Perl脚本中排除对Perl Critic的RequireRcsKeywords的检查。我不想在.perlcriticrc中更改我的默认策略,所以我在源代码的顶部添加了“无批评”行。尽管如此,Perl Critic仍然抱怨缺少RCS关键字。从Perl Critic中排除RequireRcsKeywords的正确方法是什么?

这里是我的测试案例(critictest.pl):

#!/usr/bin/perl 
## no critic (RequireRcsKeywords) 
use warnings; 
use strict; 
print "Hello, World.\n"; 

当我执行perlcritic -1 --verbose 8 critictest.pl我得到以下输出:

[Miscellanea::RequireRcsKeywords] RCS keywords $Id$ not found at line 1, column 1. (Severity: 2) 
[Miscellanea::RequireRcsKeywords] RCS keywords $Revision$, $HeadURL$, $Date$ not found at line 1, column 1. (Severity: 2) 
[Miscellanea::RequireRcsKeywords] RCS keywords $Revision$, $Source$, $Date$ not found at line 1, column 1. (Severity: 2) 
[Modules::RequireVersionVar] No package-scoped "$VERSION" variable found at line 1, column 1. (Severity: 2) 
[Miscellanea::ProhibitUselessNoCritic] Useless '## no critic' annotation at line 2, column 1. (Severity: 2) 
[InputOutput::RequireCheckedSyscalls] Return value of flagged function ignored - print at line 5, column 1. (Severity: 1) 

我知道Perl的批评家是工作,因为如果我添加## no critic (RequireCheckedSyscalls)那么输出中的错误就消失了。我也尝试加入`## no critic (Miscellanea::RequireRcsKeywords),但这并没有引起任何改变。告诉Perl Critic忽略文件中的RequireRcsKeywords策略而不必使用外部策略文件的正确方法是什么?

编辑:我使用的是Perl 5.10.1,Perl Critic 1.108和Debian 6.0.3。

回答

4

您可以添加一次性调整您.perlcriticrc文件,在命令行上--include--exclude

$ perlcritic --exclude RcsKeywords -1 --verbose 8 critictest.pl 
[Modules::RequireVersionVar] No package-scoped "$VERSION" variable found at line 1, column 1. (Severity: 2) 
[InputOutput::RequireCheckedSyscalls] Return value of flagged function ignored - print at line 4, column 1. (Severity: 1) 
2

请注意,违规发生在文件的第1行。如果我删除你的第一行,我没有得到RCS违规。我怀疑这个策略适用于整个文件,只有在文件第一行出现no critic编译指示时才可以忽略。

还请注意,它告诉你它是忽略你的编译:

[Miscellanea::ProhibitUselessNoCritic] Useless '## no critic' annotation at line 2, column 1. (Severity: 2) 
+0

感谢您指出。我错过了它。删除第一行现在让Perl Critic忽略该策略。不幸的是,我不能再运行这个命令,因为'#!'不见了,所以不用'perl'来加前缀。 – Starfish 2012-02-07 19:09:36

+1

提交此请求的请求:http://rt.cpan.org/NoAuth/Bugs.html?Dist=Perl-Critic – toolic 2012-02-07 19:23:15

2

你可以把两者的家当,并在第一行的“不批评”的注释。就像这样:

#!/usr/bin/perl -- ## no critic RequireRcsKeywords 
+0

这使得shebang行失败:'不能打开perl脚本##无评论者RequireRcsKeywords “:没有这样的文件或目录' – mob 2012-02-07 20:29:31

+3

虽然(我认为),你可以说'#!/ usr/bin/perl - ##没有评论者...'。 – mob 2012-02-07 20:35:22

+0

@mob:适用于我的系统。 – 2013-02-15 23:02:40

0

一个黑客可能是使用下面的第一行:

#!/usr/bin/perl -F## no critic (Miscellanea::RequireRcsKeywords) 

documentation说-F标志本身并不做任何事情,所以它应该是无害的。

相关问题