我知道的是Perl::Critic
到目前为止,我的谷歌搜索导致多次尝试都没有结果。 :-(
有人在这里有什么建议吗?
根据我们的编码标准配置Perl :: Critic并在代码库上运行的任何资源将不胜感激。
最佳答案
在设置个人资料方面,您是否尝试过perlcritic --profile-proto
?这将以perlcriticrc格式发出将所有已安装策略及其所有选项及其所有描述(包括其默认值)的标准输出。保存并编辑以匹配您想要的内容。每当您升级Perl :: Critic时,您可能都想再次运行此命令并与当前的perlcriticrc进行比较,以便可以看到对现有策略的任何更改并选择任何新策略。
关于定期运行perlcritic,请设置Test::Perl::Critic测试以及其余测试。这对新代码很有用。
对于现有代码,请使用Test::Perl::Critic::Progressive。 T :: P :: C :: Progressive会在您第一次运行时成功执行,但是可以节省违规次数;此后,如果任何计数上升,T :: P :: C :: Progressive都会抱怨。需要注意的一件事是何时还原源代码管理系统中的更改。 (您使用的是不是?)说我签入一个更改并运行测试,我的更改减少了P :: C违规的次数。后来,事实证明我的更改很糟糕,因此我恢复为旧代码。 T :: P :: C :: Progressive测试由于计数减少而将失败。此时最简单的操作是删除历史记录文件(默认位置t / .perlcritic-history)并再次运行。它应该重现您的旧计数,并且您可以编写新的东西来再次降低它们。
Perl :: Critic附带了很多策略,但是有很多附加的策略分发。看一下Task::Perl::Critic和Task::Perl::Critic::IncludingOptionalDependencies。
您不需要一个perlcriticrc即可处理所有代码。为要测试的每组文件创建单独的perlcriticrc文件,然后针对每个文件创建单独的测试。例如,在http://perlcritic.tigris.org/source/browse/perlcritic/trunk/Perl-Critic/xt/author/处查看作者对P :: C本身的测试。运行作者测试时,会有一个测试运行在P :: C的所有代码上,第二个测试仅对策略应用附加规则,而第三个测试则批评P :: C的测试。
我个人认为,每个人都应该在“残酷”的严重性级别上运行,但要剔除他们不同意的政策。 Perl :: Critic并不完全自我遵从;甚至P :: C开发人员也不同意Conway所说的一切。查看Perl :: Critic本身使用的perlcriticrc文件,并在Perl :: Critic代码中搜索“ ##无评论者”的实例;我目前数143。
(是的,我是Perl :: Critic开发人员之一。)