2012-02-07 57 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標誌本身並不做任何事情,所以它應該是無害的。

相關問題