perl - 禁用整个文件的评论家 - Parse::RecDescent 预编译解析器和 PerlCritic/Tidyall
问题描述
我正在尝试从我的健全性检查中删除一个错误[当我将代码推送到我的 git 存储库时,有一个钩子可以使用perltidy
& critic
...tidyall
用作处理程序来检查代码。]
我遇到的具体问题是使用预编译的语法解析器......这不是我想深入研究和修复的东西(抱歉 - 这超出了我的舒适区)
如果我## no critic
在文件的开头添加一个简单的,那么
perlcritic path/to/class/file.pm
回来
path/to/class/file.pm source OK
然而
tidyall --check-only -r .
回来了
perlcritic /tmp/Code-TidyAll-Frb0/path/to/class/file.pm failed
exited with 2 - output was:
Unrestricted '## no critic' annotation at line 6, column 1. (Miscellanea::ProhibitUnrestrictedNoCritic, severity 3)
tidyall.ini
我知道我可以在文件中解决这个问题:
[PerlCritic lib]
select = **/*.{pm}
ignore = **/class/file.pm
....但是我觉得应该有一个更清洁的解决方案。
(或者,为什么tidyall
批评不一样critic
?)
解决方案
为什么
tidyall
批评不一样critic
?
命令行中的简单perlcritic
默认为严重性 5,除非您在~/.perlcriticrc
. 该规则ProhibitUnrestrictedNoCritic
默认为严重性 3,因此您至少以严重性 3tidyall
运行。根据其文档,您可以通过以下内容更改它:Perl::Critic
tidyall.ini
[PerlCritic]
argv = -severity 4
然后tidyall
的检查应该perlcritic -4
与命令行中的 a 相同。(除非您已经在 . 中配置了自定义严重性级别.perlcriticrc
。)
更新:根据您的评论,您想在“残酷”级别检查所有内容。在这种情况下,您可以创建一个perlcriticrc
包含[-Miscellanea::ProhibitUnrestrictedNoCritic]
将禁用该策略的行的文件,然后perlcritic
通过添加命令行参数指向该文件--profile /path/to/custom/perlcriticrc
。