问题标签 [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 - 从 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。
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 定义的长度,我就会收到错误消息:
感谢您抽出宝贵时间,如果您需要任何其他信息,请告诉我。
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
开心。
perl - B::Lint 和 Perl::Critic 用于静态代码分析
我需要为 Perl 中的静态代码分析实现 lint 和 Perl::Critic。我在 Perl 中找到了用于 lint 的 B::Lint 模块。
- 是否真的需要使用这两个模块进行静态代码分析?
- 如果是,那么这两个模块如何协同工作?
perl - Perl 中的静态代码分析模块
除了 B::Lint 和 Perl::Critic 之外,Perl 中是否有任何静态代码分析模块?Module::Checkstyle 的效果如何?
regex - Perl Regex 将字符串转换为十六进制 警告未初始化值或使用 /x
我在 perl 中使用正则表达式将字符串转换为十六进制,但是,当我这样做时,我会收到来自 perl 评论家或 perl 的警告:
有没有办法编写上述代码而不会从 Perl 评论家那里得到警告或反馈?
我认为问题在于 ord 正在处理未定义的值,并且当您输入 /x 时,检查正则表达式会认为 $1 的值是无效的。
perl - Perl::Critic “不要使用这种方法”类型的规则
我们一直Perl::Critic
在工作中使用这里来执行我们的代码约定。最近我们遇到/tmp
了由于该Temp::File::tempdir
功能而导致目录被填满的问题。tempdir
当 Perl 进程终止时进行清理,但由于我们的整个后端是一个 Perl 进程,所以这只发生在服务器本身重新启动时(不经常)。我们希望鼓励开发人员newdir
在未来使用对象方法,一旦对象超出范围,该方法就会自行清理。
基本上,我们试图将其标记Temp::File::tempdir
为违反代码约定,但我似乎无法在 CPAN 上找到任何类似的规则。我知道在不引入误报的情况下很难在动态类型的语言中强制执行,但我希望过去有人遇到过类似的问题,而另一个已弃用的函数。我们也不指望能捕捉到所有棘手的情况,只希望捕捉到Temp::File::tempdir
. 这个想法是为了阻止意外使用tempdir
when newdir
could 做这项工作,而不是抓住所有试图愚弄评论家的企图(开发人员总是可以只使用## no critic
)。tempdir
如果use Temp::File
已定义(最好检查没有其他东西重新定义tempdir
)以及何时使用,抱怨何时使用可能就足够了Temp::File::tempdir
。
是否已经有类似的东西,或者我应该从头开始?谢谢
perl - 带有附加配置文件的 perlcritic
是否可以将另一个配置文件“添加”到 perlcritic 默认配置文件,或者使用多个配置文件运行 perlcritic?我不想跳过/替换默认配置文件。我需要向它添加一个额外的配置文件。
我知道我可以导出当前配置文件并附加我的添加,然后将其用作默认配置文件。但在这种情况下,我应该确保在每次 perlcritic 更新后我都会做同样的事情,因为默认配置文件可能已经更新。
perl - Perlcritic 认为哈希是用逗号分隔的语句
我遇到了一个 perlcritic 违规行为,这对于以下代码块毫无意义:
Perlcritic 1.117 说“逗号用于分隔第 880 行第 4 列的语句。参见 PBP 第 68,71 页。”
我只能假设 perlcritic 错误地将这些哈希识别为代码块。
我已经通过在每个这样的“块”的顶部插入“## nocritic (ProhibitCommaSeparatedStatements)”来禁用它,但是有没有更好的方法来处理这个问题?
perl - 如何在 osx 上安装 perl 评论家?
我尝试下载、解压并按照说明进行操作:
当我进入制作步骤时,我得到:
我怀疑它是因为我缺少依赖项。我还发现了这个任务 - https://metacpan.org/pod/Task::Perl::Critic这似乎很有趣,但它没有关于如何运行的说明。
--- 编辑运行后 - sudo cpan Task::Perl::Critic
我得到这些结果: