问题标签 [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.
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
快乐?
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 名称或其他问题。
arrays - 使用正则表达式将字符串拆分为数组时的 Perl 评论家错误
我有上面的正则表达式将一些字符串拆分成数组。它工作正常。
问题是:
Perl 评论家给出以下错误。请告诉我如何解决这个问题。
string - 在检查字符串中子字符串的索引时违反 Perl 评论家策略
问题是:Perl 评论家给出了以下违反政策的规定。
字符串可能需要在第 168 行,'$item, '$n'' 附近进行插值。(严重性:1)
请告知我该如何解决这个问题?
perl - 禁用整个文件的评论家 - Parse::RecDescent 预编译解析器和 PerlCritic/Tidyall
我正在尝试从我的健全性检查中删除一个错误[当我将代码推送到我的 git 存储库时,有一个钩子可以使用perltidy
& critic
...tidyall
用作处理程序来检查代码。]
我遇到的具体问题是使用预编译的语法解析器......这不是我想深入研究和修复的东西(抱歉 - 这超出了我的舒适区)
如果我## no critic
在文件的开头添加一个简单的,那么
回来
然而
回来了
tidyall.ini
我知道我可以在文件中解决这个问题:
....但是我觉得应该有一个更清洁的解决方案。
(或者,为什么tidyall
批评不一样critic
?)
perl - Perlcritic 无法识别已整理的代码
我将perlcritic与perltidy一起使用,并且在应用其他规则时,我收到以下错误消息:
我已经运行 perltidy 来整理代码,但我仍然遇到问题。在 .perlcriticrc 文件中,我添加了以下带有 .perltidyrc 文件路径的规则。
我正在像这样运行 perlcritic:
我确信 perlcritic 正在使用 rc 文件,因为我可以通过修改文件内容来打开和关闭规则。我也确定 perltidy 以同样的方式使用正确的 rc 文件。
如何在不禁用 RequireTidyCode 规则的情况下防止此错误?
我添加了一个示例,通过将实际文件减少到仍然出现错误的最小值来重新创建问题。这就是我运行它的方式:
评论家输出的第一行是:
这些是文件:
TestCritic.pm
.perltidyrc
.perlcriticrc
版本是:perlcritic v1.132 perltidy v20181120
谢谢,
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 页,但我并不清楚答案。
perl - 防止编译器执行 BEGIN / UNITCHECK / CHECK / INIT 块
我想检测我的 perl 代码中的语法错误。我发现perlcritic
错过了很多,(例如,else
在 any 之前随机插入if
,所以尝试编译perl -cw
看起来是唯一可行的选择。
但是,我不想在检查错误时打开自己执行代码。
这篇 perlmonks 帖子 显示 in BEGIN
、INIT
、UNITCHECK
和
CHECK
块可以/确实在编译时执行。
我可以perl
在不运行任何代码的情况下检查代码吗?
删除或重命名可能导致执行的块怎么办?
perl - perlcritic 消息:在 void 上下文中使用的映射
下面有一个 Perl 代码行,我从中获取消息perlcritic
:
消息是:
谁能帮我解决它?
perl - Perl:除了 eval,评估表达式的首选方法是什么?
我正在尝试使用算术来评估写为字符串的 a 函数:
上面的代码有效,并给出了正确的答案。
但是,perlcritic 说最好避免使用上述代码:Expression form of "eval" at line 10, column 11. See page 161 of PBP. (Severity: 5)
我已经阅读了 Perl 最佳实践的那部分,但它很长,我看不出它如何适用于我正在做的非常简单的情况。
那么评估函数的好方法是什么?