问题标签 [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 投票
1 回答
515 浏览

perl-critic - 使用 perl v5.8.8 在 centos 6.4 上安装 Perl-Critic-1.119

有没有办法使用 perl v5.8.8 在 centos 6.4 上安装 Perl-Critic-1.119,当我尝试使用 cpanm 时出现错误:

我无法升级 Perl。

0 投票
1 回答
109 浏览

perl - 我如何使用 Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers

我想使用模块 Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers仅在 .C 文件中检查幻数

如果我使用 Perl::Critic,我得到错误 Can't parse code: Unknown error parsing Perl document

如果我使用 Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers,我得到错误 Can't locate object method "new" via package "Perl::Critic"

0 投票
3 回答
255 浏览

perl - 让 Perl 警告我缺少未使用的函数

尽管使用了 -w,但上述运行没有错误,因为 no_such_func() 从未被调用。

如何让 Perl 检查我引用的所有函数/模块,即使是我不使用的?

在更现实的情况下,某些函数可能只在特殊情况下调用,但我仍然想确保它们存在。

编辑:我安装了 perlcritic,但我认为我仍然做错了什么。我创建了这个文件:

并且 perlcritic 说这很好(“来源 OK”)。静态分析肯定可以捕捉到 no_such_func() 的不存在吗?该程序也运行良好(并且不产生任何输出)。

0 投票
3 回答
671 浏览

perl - 将 IPC::Open3 与 perlcritic 一起使用

我想抑制子进程中的输出并只读stderr。perlfaq8建议执行以下操作:

但随后perlcritic争论使用裸字文件句柄

我唯一能设计的是将select新打开的描述符/dev/null改为 on STDOUT,如下所示:

但是perlcritic不喜欢使用 ofselect。有更优雅的解决方案吗?

0 投票
2 回答
325 浏览

perl - perl 在脚本和 PerlCritic 中使用 bless self

我习惯于使用$selffor OO Perl,即使我只是编写独立的脚本而根本没有命名我的包。例如,我script.pl会这样开始:

这些脚本有时会变成适当的模块,但有时我只是让它们如此。

这虽然违背了 Perl Critic of "One-argument blesses":

有没有一种简洁的方式来命名我的祝福,但仍然包含我的所有内容script.pl

0 投票
2 回答
169 浏览

perl - perl IPC:Open3 最小通过 perlcritic?

我正在阅读 perlcritic 文档以避免反引号并在此处使用 IPC::Open3:

http://perl-critic.stacka.to/pod/Perl/Critic/Policy/InputOutput/ProhibitBacktickOperators.html

我试图找到最不冗长的选项,它将起作用并满足 perlcritic:

但它抱怨以下错误:

有任何想法吗?

编辑:好的,这就是我所拥有的。除非有办法简化它,否则我会坚持这一点:

0 投票
2 回答
421 浏览

perl - 如何检测 Perl 条件中始终评估为假的不可达代码?

我是 Perl 新手,目前的任务是整理和维护一个庞大且非常混乱的 Perl 项目。我正在使用 perl-critic 来帮助我检测代码中的问题(并教我最佳实践)。

现有代码中有编码人员创建了无法访问的代码的地方。例如,他们添加了 '&& 0' 作为注释掉一些代码分支的懒惰方式:

我希望 perl 或 Critic 会在这种情况下警告我有关无法访问的代码(条件具有评估为 false 的常量值),但事实并非如此。

有没有我可以使用的工具或脚本可以可靠地检测到这种事情?

显然,我可以在源代码中搜索 '&& 0',但是除了将 '&& 0' 附加到 if 语句之外,编码器还可以通过多种方式创建无法访问的代码。

0 投票
1 回答
3048 浏览

perl - 使用 Modern::Perl 时 Perl::Critic '代码之前的限制'

我知道最好使用 Modern::Perl 而不是使用严格和警告。

使用默认选项,Perl::Critic v1.121 在严格之前抱怨代码,即使“使用 Modern::Perl”在代码之前也是如此。

问题:更新 perlcriticrc 配置的最佳解决方案如下,还是有更好的方法?

配置来源如下

猫 ~/.perlcriticrc

另请注意: 此处的开发人员讨论

0 投票
1 回答
213 浏览

perl - Why am I *not* getting this warning: "variable masks earlier declaration"?

Here's my entire script, crafted to include two variable with the same name, one of which is masking the other:

If I run this script, I get this output, and noticeably no warnings:

If I remove the curly braces around the second $hi variable so that is in the same scope as the first $hi variable, I get this warning:

However, I want this warning even when the variable is not in the same scope. I want the warning every time a variable name is shadowing another. How can I enable this warning? Is there a Perl Critic policy that I can enable that will warn me about this?

0 投票
3 回答
564 浏览

perl - 如何从启用了 ProhibitExcessComplexity 的脚本运行 perl 评论家?

如何从Subroutines::ProhibitExcessComplexity启用的脚本运行 Perl 评论家?我尝试了以下方法,但它没有标记复杂的 500+ 行子例程。我没有.perlcriticrc(我也不希望有一个)

我的Perl::Critic版本是1.116