【问题标题】:Are there any good automated frameworks for applying coding standards in Perl?在 Perl 中应用编码标准是否有任何好的自动化框架?
【发布时间】:2023-04-09 20:09:01
【问题描述】:

我知道的是Perl::Critic

到目前为止,我的谷歌搜索多次尝试都没有结果。 :-(

这里有人有什么建议吗?

任何根据我们的编码标准配置 Perl::Critic 并在代码库上运行它的资源将不胜感激。

【问题讨论】:

  • “启动并运行”是什么意思?
  • 通过“启动并运行”,我的意思是根据我的需要配置评论家(我知道有 Perl::Critic::Config,但是作为 perl 编码器,我很懒惰:) ) 并在我的代码库上运行它。我会更新问题。

标签: perl frameworks coding-style perl-critic


【解决方案1】:

在设置个人资料方面,您是否尝试过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 开发人员也不同意康威所说的一切。查看 Perl::Critic 本身使用的 perlcriticrc 文件,并在 Perl::Critic 代码中搜索“## nocritic”的实例;我现在数了 143 个。

(是的,我是 Perl::Critic 开发人员之一。)

【讨论】:

    【解决方案2】:

    大多数风格标准都有perltidy。 perlcritic 可以使用.perlcritic file 轻松配置。我个人在第一级使用它,但我禁用了一些策略。

    【讨论】:

      【解决方案3】:

      除了“自动化框架”,我强烈推荐 Damian Conway 的 Perl 最佳实践。我不是 100% 同意他的建议,但大多数时候他都在努力。

      【讨论】:

        【解决方案4】:

        上面提到Devel::Prof 的帖子可能真的意味着Devel::Cover(以获得测试套件的代码覆盖率)。

        【讨论】:

          【解决方案5】:
          【解决方案6】:

          EPIC for Eclipse 是一个不错的组合——点击 CTRL-SHIFT-C(或您首选的配置快捷方式)和您的代码perlcritic 发现有什么可抱怨的地方都会用警告指示标记。比记得在签入前运行它要好得多。与 perlcritic 一样,它会获取您的 .perlcriticrc 以便您可以自定义规则。我们将 .perlcriticrc 保留在版本控制中,以便每个人都获得相同的标准。

          【讨论】:

            【解决方案7】:

            除了美观的最佳实践之外,我总是发现在我的单元测试套件上运行 Devel::Prof 来检查测试覆盖率很有用。

            【讨论】:

              猜你喜欢
              • 2011-04-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多