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

perl - 从 Perl Critic 中排除 RequireRcsKeywords 的正确方法是什么?

我试图在单个 Perl 脚本中排除对 Perl Critic 的 RequireRcsKeywords 的检查。我不想在 .perlcriticrc 中更改我的默认策略,所以我在源代码的顶部添加了一个“nocritic”行。尽管发生了这种变化,Perl Critic 仍然抱怨缺少 RCS 关键字。

这是我的测试用例(critictest.pl):

当我执行时,perlcritic -1 --verbose 8 critictest.pl我得到以下输出:

我知道 Perl Critic 正在工作,因为如果我添加## no critic (RequireCheckedSyscalls),那么输出中的错误就会消失。我也尝试添加`## no critic (Miscellanea::RequireRcsKeywords),但这并没有引起任何变化。告诉 Perl Critic 忽略我文件中的 RequireRcsKeywords 策略而不必使用外部策略文件的正确方法是什么?

编辑:我正在使用 Perl 5.10.1、Perl Critic 1.108 和 Debian 6.0.3。

0 投票
1 回答
220 浏览

perl - 无法使策略 Perl::Critic::Policy::Tics::ProhibitLongLines 起作用

我有:

  • Ubuntu 10.04
  • Perlbrew 0.39
  • 切换到 Perl 5.12.3。用 perlbrew
  • 使用 cpanm 安装 Perl::Critic 和 Perl::Critic::Tics

我的 .perlcriticrc 文件:

其他策略按预期运行,但只要一行超过 hard_max 定义的长度,我就会收到错误消息:

感谢您抽出宝贵时间,如果您需要任何其他信息,请告诉我。

0 投票
3 回答
325 浏览

perl - 如何在 Perl 中不使用 $b (comparison) $a 对一个键进行升序排序,另一个降序排序?

在 Perl 中,我可以这样做:

它按一个字段(数组元素)降序和另一个(哈希键)升序排序,但会导致perlcritic抱怨:

在 X 行 Y 列的排序块中禁止在 $a 之前使用 $b。参见 PBP 第 152 页。(严重性:1)

Perl Best Practices建议使用reverse

但是如果你写下这个操作会更容易理解:
@sorted_results = reverse sort @unsorted_results;

但是,我还没有找到一种方法让子排序以相反的方向运行。

显然,我可以告诉perlcritic忽略这一点,但我想知道如何完成我需要的事情并让自己perlcritic开心。

0 投票
1 回答
1371 浏览

perl - B::Lint 和 Perl::Critic 用于静态代码分析

我需要为 Perl 中的静态代码分析实现 lint 和 Perl::Critic。我在 Perl 中找到了用于 lint 的 B::Lint 模块。

  1. 是否真的需要使用这两个模块进行静态代码分析?
  2. 如果是,那么这两个模块如何协同工作?
0 投票
1 回答
1298 浏览

perl - Perl 中的静态代码分析模块

除了 B::Lint 和 Perl::Critic 之外,Perl 中是否有任何静态代码分析模块?Module::Checkstyle 的效果如何?

0 投票
1 回答
452 浏览

regex - Perl Regex 将字符串转换为十六进制 警告未初始化值或使用 /x

我在 perl 中使用正则表达式将字符串转换为十六进制,但是,当我这样做时,我会收到来自 perl 评论家或 perl 的警告:

有没有办法编写上述代码而不会从 Perl 评论家那里得到警告或反馈?

我认为问题在于 ord 正在处理未定义的值,并且当您输入 /x 时,检查正则表达式会认为 $1 的值是无效的。

0 投票
1 回答
456 浏览

perl - Perl::Critic “不要使用这种方法”类型的规则

我们一直Perl::Critic在工作中使用这里来执行我们的代码约定。最近我们遇到/tmp了由于该Temp::File::tempdir功能而导致目录被填满的问题。tempdir当 Perl 进程终止时进行清理,但由于我们的整个后端是一个 Perl 进程,所以这只发生在服务器本身重新启动时(不经常)。我们希望鼓励开发人员newdir在未来使用对象方法,一旦对象超出范围,该方法就会自行清理。

基本上,我们试图将其标记Temp::File::tempdir为违反代码约定,但我似乎无法在 CPAN 上找到任何类似的规则。我知道在不引入误报的情况下很难在动态类型的语言中强制执行,但我希望过去有人遇到过类似的问题,而另一个已弃用的函数。我们也不指望能捕捉到所有棘手的情况,只希望捕捉到Temp::File::tempdir. 这个想法是为了阻止意外使用tempdirwhen newdircould 做这项工作,而不是抓住所有试图愚弄评论家的企图(开发人员总是可以只使用## no critic)。tempdir如果use Temp::File已定义(最好检查没有其他东西重新定义tempdir)以及何时使用,抱怨何时使用可能就足够了Temp::File::tempdir

是否已经有类似的东西,或者我应该从头开始?谢谢

0 投票
1 回答
134 浏览

perl - 带有附加配置文件的 perlcritic

是否可以将另一个配置文件“添加”到 perlcritic 默认配置文件,或者使用多个配置文件运行 perlcritic?我不想跳过/替换默认配置文件。我需要向它添加一个额外的配置文件。

我知道我可以导出当前配置文件并附加我的添加,然后将其用作默认配置文件。但在这种情况下,我应该确保在每次 perlcritic 更新后我都会做同样的事情,因为默认配置文件可能已经更新。

0 投票
1 回答
106 浏览

perl - Perlcritic 认为哈希是用逗号分隔的语句

我遇到了一个 perlcritic 违规行为,这对于以下代码块毫无意义:

Perlcritic 1.117 说“逗号用于分隔第 880 行第 4 列的语句。参见 PBP 第 68,71 页。”

我只能假设 perlcritic 错误地将这些哈希识别为代码块。

我已经通过在每个这样的“块”的顶部插入“## nocritic (ProhibitCommaSeparatedStatements)”来禁用它,但是有没有更好的方法来处理这个问题?

0 投票
3 回答
3757 浏览

perl - 如何在 osx 上安装 perl 评论家?

我尝试下载、解压并按照说明进行操作:

当我进入制作步骤时,我得到:

我怀疑它是因为我缺少依赖项。我还发现了这个任务 - https://metacpan.org/pod/Task::Perl::Critic这似乎很有趣,但它没有关于如何运行的说明。

--- 编辑运行后 - sudo cpan Task::Perl::Critic

我得到这些结果: