gpt4 book ai didi

perl - 我们如何使用 Perl::Tidy 或 Perl::Critic 捕捉旁注?

转载 作者:行者123 更新时间:2023-12-04 16:23:55 28 4
gpt4 key购买 nike

我的部门目前正在确定一些通用代码最佳实践,我们希望在一定程度上强制执行,为开发人员提供 Perl::Tidy Perl::Critic 配置。

现在我们在旁注方面遇到了问题。旁注是这样的:

my $counter = 0;  # Reset counter

我们宁愿完全没有旁注,因为在大多数情况下,它们可以写在相关代码的上方,这样更容易阅读。如果可能的话,一个 Perl::Tidy 解决方案将是完美的,这会将旁注移至其上方的行,第二好的将是 Perl::Critic 政策(我也没有在 CPAN 上找到),第三好的和最后的将是开发人员在进行代码审查时注意指出这些评论。

是否可以用 Perl::Tidy 实现或 Perl::Critic ?

最佳答案

我认为这应该适合你(如果我理解你想要什么):

package Perl::Critic::Policy::CodeLayout::NoSideComments;

use strict;
use warnings;

use Readonly;

use Perl::Critic::Utils qw{ :severities :classification :ppi };
use parent 'Perl::Critic::Policy';

our $VERSION = 20090904;

Readonly::Scalar my $DESC => "side comments are not allowed";
Readonly::Scalar my $EXPL => "put the comment above the line, not next to it";

sub supported_parameters { return }
sub default_severity { return 5 }
sub default_themes { return qw( custom ) }
sub applies_to { return 'PPI::Token::Comment' }

sub violates {
my ($self, $elem) = @_;

#look backwards until you find whitespace that contains a
#newline (good) or something other than whitespace (error)

my $prev = $elem->previous_sibling;
while ($prev) {
return $self->violation( $DESC, $EXPL, $elem )
unless $prev->isa("PPI::Token::Whitespace");
return if $prev->content =~ /\n/;
$prev = $prev->previous_sibling;
}

#catch # after a block start, but leave the #! line alone
return $self->violation( $DESC, $EXPL, $elem )
unless $elem->parent->isa("PPI::Document");
return;
}

1;

关于perl - 我们如何使用 Perl::Tidy 或 Perl::Critic 捕捉旁注?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378764/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com