问题标签 [perl-critic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
180 浏览

perl - 为什么 Try::Tiny 的“try {}”对于在 try 块中创建的对象看起来与“eval {}”不同?

我在系统托盘小程序中有以下初始化代码:

该代码基于fdpowermon,但似乎或多或少来自Glib::Object::Introspection 的 POD 中的异常处理示例

但是 perlcritic(第 3 级)对此进行了争论:

所以我尝试用 Try::Tiny 重写它:

但随后 perl 争辩说:

虽然我确实看到该finally块并不是真正的改进,但我不明白为什么使用 Try::Tiny 会对 Glib::Object::Introspection 创建的包产生如此大的影响。

或者有没有比 Try::Tiny 更好的方法来让这段代码更优雅、更易读,同时保持perlcritic快乐?

0 投票
1 回答
376 浏览

perl - 强制 Ale 将 Perl::Critic 违规显示为警告而不是错误

我正在使用vim插件Ale。默认情况下,perlcritic违规显示为错误。我希望看到它们显示为警告。根据:help g:ale_type_map我应该能够做到这一点,但我不清楚具体如何。

let g:ale_type_map = {'perl': {'E': 'W'}}会将perl错误变为警告。

let g:ale_type_map = {'perl': {'ES': 'WS'}}似乎对批评者​​违规没有任何影响。这些都不行:

这方面的文档非常稀少,所以我不清楚这是否是语法、linter 名称或其他问题。

0 投票
2 回答
186 浏览

arrays - 使用正则表达式将字符串拆分为数组时的 Perl 评论家错误

我有上面的正则表达式将一些字符串拆分成数组。它工作正常。

问题是:

Perl 评论家给出以下错误。请告诉我如何解决这个问题。

0 投票
1 回答
102 浏览

string - 在检查字符串中子字符串的索引时违反 Perl 评论家策略

问题是:Perl 评论家给出了以下违反政策的规定。

字符串可能需要在第 168 行,'$item, '$n'' 附近进行插值。(严重性:1)

请告知我该如何解决这个问题?

0 投票
1 回答
176 浏览

perl - 禁用整个文件的评论家 - Parse::RecDescent 预编译解析器和 PerlCritic/Tidyall

我正在尝试从我的健全性检查中删除一个错误[当我将代码推送到我的 git 存储库时,有一个钩子可以使用perltidy& critic...tidyall用作处理程序来检查代码。]

我遇到的具体问题是使用预编译的语法解析器......这不是我想深入研究和修复的东西(抱歉 - 这超出了我的舒适区)

如果我## no critic在文件的开头添加一个简单的,那么

回来

然而

回来了

tidyall.ini我知道我可以在文件中解决这个问题:

....但是我觉得应该有一个更清洁的解决方案。

(或者,为什么tidyall批评不一样critic?)

0 投票
1 回答
368 浏览

perl - Perlcritic 无法识别已整理的代码

我将perlcriticperltidy一起使用,并且在应用其他规则时,我收到以下错误消息:

我已经运行 perltidy 来整理代码,但我仍然遇到问题。在 .perlcriticrc 文件中,我添加了以下带有 .perltidyrc 文件路径的规则。

我正在像这样运行 perlcritic:

我确信 perlcritic 正在使用 rc 文件,因为我可以通过修改文件内容来打开和关闭规则。我也确定 perltidy 以同样的方式使用正确的 rc 文件。

如何在不禁用 RequireTidyCode 规则的情况下防止此错误?

我添加了一个示例,通过将实际文件减少到仍然出现错误的最小值来重新创建问题。这就是我运行它的方式:

评论家输出的第一行是:

这些是文件:

TestCritic.pm

.perltidyrc

.perlcriticrc

版本是:perlcritic v1.132 perltidy v20181120

谢谢,

0 投票
3 回答
320 浏览

perl - Perl::Critic in Brutal Mode

所以我最近开始使用Perl::Critic来检查我编写的代码的质量。我正在以残酷的模式运行它,并提出了一个我不理解为问题的建议。输出是:

Return value of flagged function ignored - print at line 197, column 13. See pages 208,278 of PBP. (Severity: 1)

这基本上是对 print 函数的调用,并带有一条输出到控制台的短消息。那我为什么要捕获几乎肯定总是 1 的返回值,因为我想不出任何不是 1 的用例。

野蛮模式“太野蛮”了吗?还是我错过了什么?我应该补充一点,我确实阅读了 PBP 的第 208 页和第 278 页,但我并不清楚答案。

0 投票
1 回答
143 浏览

perl - 防止编译器执行 BEGIN / UNITCHECK / CHECK / INIT 块

我想检测我的 perl 代码中的语法错误。我发现perlcritic错过了很多,(例如,else在 any 之前随机插入if,所以尝试编译perl -cw看起来是唯一可行的选择。

但是,我不想在检查错误时打开自己执行代码。

这篇 perlmonks 帖子 显示 in BEGININITUNITCHECKCHECK块可以/确实在编译时执行。

我可以perl在不运行任何代码的情况下检查代码吗?

删除或重命名可能导致执行的块怎么办?

0 投票
1 回答
83 浏览

perl - perlcritic 消息:在 void 上下文中使用的映射

下面有一个 Perl 代码行,我从中获取消息perlcritic

消息是:

谁能帮我解决它?

0 投票
2 回答
106 浏览

perl - Perl:除了 eval,评估表达式的首选方法是什么?

我正在尝试使用算术来评估写为字符串的 a 函数:

上面的代码有效,并给出了正确的答案。

但是,perlcritic 说最好避免使用上述代码:Expression form of "eval" at line 10, column 11. See page 161 of PBP. (Severity: 5)

我已经阅读了 Perl 最佳实践的那部分,但它很长,我看不出它如何适用于我正在做的非常简单的情况。

那么评估函数的好方法是什么?