在 Perl 中应用编码标准有什么好的自动化框架吗?
-
09-06-2019 - |
题
解决方案
在设置个人资料方面,您尝试过吗 perlcritic --profile-proto
?这将以 perlcriticrc 格式向标准输出发送所有已安装的策略及其所有选项以及两者的描述,包括它们的默认值。保存并编辑以匹配您想要的内容。每当您升级 Perl::Critic 时,您可能需要再次运行此命令并与当前的 perlcriticrc 进行比较,以便您可以看到现有策略的任何更改并选择任何新策略。
在定期运行 perlcritic 方面,设置一个 测试::Perl::评论家 与其他测试一起进行测试。这对于新代码来说是有好处的。
对于您现有的代码,请使用 测试::Perl::批评家::渐进式 反而。T::P::C::Progressive 将在您第一次运行时成功,但会保存违规次数计数;此后,如果任何计数上升,T::P::C::Progressive 将发出抱怨。需要注意的一件事是当您恢复源代码控制系统中的更改时。(您正在使用一个,不是吗?)假设我签入更改并运行测试,我的更改减少了 P::C 违规的数量。后来发现我的改变很糟糕,所以我恢复到旧的代码。T::P::C::Progressive 测试将由于计数减少而失败。此时最简单的方法是删除历史文件(默认位置 t/.perlcritic-history)并再次运行。它应该重现你的旧计数,你可以编写新的东西来再次降低它们。
Perl::Critic 有很多附带的策略,但是还有很多附加的策略发行版。看一下 任务::Perl::Critic 和 任务::Perl::Critic::包括可选依赖项.
您不需要让一个 perlcriticrc 处理您的所有代码。为要测试的每组文件创建单独的 perlcriticrc 文件,然后创建指向每个文件的单独测试。例如,请查看作者对 P::C 本身的测试: http://perlcritic.tigris.org/source/browse/perlcritic/trunk/Perl-Critic/xt/author/. 。当运行作者测试时,有一个测试运行 P::C 的所有代码,第二个测试仅对策略应用附加规则,第三个测试批评 P::C 的测试。
我个人认为,每个人都应该以“残酷”的严厉程度来竞选,但淘汰他们不同意的政策。Perl::Critic 并不完全符合自我要求;甚至 P::C 开发人员也不同意 Conway 所说的一切。查看 Perl::Critic 本身使用的 perlcriticrc 文件,并在 Perl::Critic 代码中搜索“## no Criteria”的实例;我现在数了一下,有143个。
(是的,我是 Perl::Critic 开发人员之一。)
其他提示
有 佩尔蒂迪 对于大多数风格标准。perlcritic 可以使用轻松配置 .perlcritic 文件. 。我个人在第一级使用它,但我禁用了一些策略。
除了“自动化框架”之外,我强烈推荐 Damian Conway 的 Perl 最佳实践. 。我并不百分百同意他的建议,但大多数时候他都是直言不讳的。
一个很好的组合是 perlcritic 与 EPIC for Eclipse - 点击 CTRL-SHIFT-C (或您首选的配置快捷键),只要 perlcritic 发现需要抱怨的地方,您的代码就会用警告指示器标记。比记住在签入之前运行它要好得多。与 perlcritic 一样,它会获取您的 .perlcriticrc 以便您可以自定义规则。我们将 .perlcriticrc 保留在版本控制中,以便每个人都获得相同的标准。
除了外观最佳实践之外,我总是发现在我的单元测试套件上运行 Devel::Prof 来检查测试覆盖率很有用。