我已经开始将一个项目转换为Moose,我注意到的第一件事就是我的批评/整洁测试下地狱了.Moose,Tidy和Critic似乎并不像以前那样喜欢对方.
是否有关于如何使批评/整理更加欣赏穆斯方言的文档?大多数Moose用户做什么?放松/放弃批评更重的Moose模块?自定义政策?
我公司的一只猫走过键盘,留下了有效的1000多行可执行Perl代码供我维护.
感谢Perl的TMTOWTDI理念,我发现自己正在搜索Google,以了解她所生成的每一行代码.
为了增加我的痛苦,代码没有缩进,并且在一行中发现两个语句频繁出现,无法确定循环是外/内.
如何自动将此Perl代码置于健全状态?是的,我打赌会有一些CPAN模块可以做到这一点.一些外部工具怎么样?有线索吗?
是否有一种直接的配置方式,Perl::Tidy以便正确处理使用Devel::Declare?创建的自定义关键字?
具体来说,我正在使用Sub::Curried,它创建一个curry或多或少sub与5.20中的方法签名一样的关键字,但具有currying功能:
curry add ($x, $y) {
return $x + $y;
}
Run Code Online (Sandbox Code Playgroud)
请注意,a ;不是必需的,Perl::Tidy因为它给出了:
curry add( $x, $y ) {
return $x + $y;
}
Run Code Online (Sandbox Code Playgroud)
使用更长的子程序,无论有没有,情况会变得更糟;:
curry add( $x, $y ) {
my $z = $x + $y;
return $z;
};
Run Code Online (Sandbox Code Playgroud)
我想告诉Perl::Tidy要curry完全sub不应该对待.或者,有没有办法让它忽略那些它不理解的部分并且仍然整理文件的其余部分?
我有以下代码片段:
my $obj = $class->new({
schema => $schema,
reminder => $reminder,
action => $action,
dt => $dt,
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,perltidy尝试将其格式化为某种东西,如下所示:
my $obj = $class->new(
{ schema => $schema,
reminder => $reminder,
action => $action,
dt => $dt,
}
);
Run Code Online (Sandbox Code Playgroud)
我不喜欢花括号放置.我可以以某种方式配置perltidy来格式化它像第一个例子?(跳过块的格式不是一个选项.我想将每个更长的hashref格式化为该格式,因此它更紧凑和可读)
到目前为止我的perltidyrc:
-l=79 # Max line width is 78 cols
-i=4 # Indent level is 4 cols
-ci=4 # Continuation indent is 4 cols
-st # Output to STDOUT
-se # Errors to STDERR
-vt=2 # Maximal vertical tightness
-cti=0 # No …Run Code Online (Sandbox Code Playgroud) 如何防止PerlTidy对齐分配但继续添加单个空格?
这个问题类似于如何阻止PerlTidy调整我的作业?但我希望在指示的地方添加单个空格.由于此-naws开关对我不起作用.我只是不想插入多个空格.它可能与perltidy或其他工具?
Perl整洁的变化:
my $a = 1;
my $aa = 2;
my $aaa= 3;
Run Code Online (Sandbox Code Playgroud)
成
my $a = 1;
my $aa = 2;
my $aaa = 3;
Run Code Online (Sandbox Code Playgroud)
与-naws它保持不变:
my $a = 1;
my $aa = 2;
my $aaa= 3;
Run Code Online (Sandbox Code Playgroud)
我希望此代码格式为:
my $a = 1;
my $aa = 2;
my $aaa = 3;
Run Code Online (Sandbox Code Playgroud) 这个问题并不是在寻找建议来找到不会受到伤害的正确方法.
假设如下:
我考虑过开始在子程序级别进行格式化,但我没有在perltidy中找到这样的功能.还有另一个功能" 跳过选定的代码段 ",但现在我可能想要相反 - 只格式化选定的代码段.这个想法是,当开发人员接触到部分代码时,他/她将只修改修改后的部分.
最好的方法是找到一种方法来格式化整个项目一次,而不会中断开发周期,并确保我们不会破坏代码的任何部分(在合并期间).我们有单元测试,但代码的某些部分可能仍未被发现.
我还要澄清一下,团队中的每个人都使用可能不同的编辑器.例如,我使用Sublime Text 3和SublimePerlTidy.其他人使用Kate或Atom或VIM.一个正确的方法似乎是只格式化我们触摸的代码片段@xxfelixxx(谢谢!)
git perl continuous-integration project-management perl-tidy
如何将perltidy配置为格式化if if语句如下:
if (
('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or
('hello world' =~ /world/ and 6 = 3 * 2 * 1)
) {
print "hello\n";
}
Run Code Online (Sandbox Code Playgroud)
或者像这样
if (
('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6)
or ('hello world' =~ /world/ and 6 == 3 * 2 * 1)
) {
print "hello\n";
}
Run Code Online (Sandbox Code Playgroud)
编辑1:perltidyrc
--maximum-line-length=100
--indent-columns=4
--default-tabsize=4
--continuation-indentation=4
--closing-token-indentation=0
--no-indent-closing-brace
--paren-tightness=2
--square-bracket-tightness=2 …Run Code Online (Sandbox Code Playgroud) 我的部门目前正在解决一些通用代码的最佳实践,这是我们想有所加强,为开发人员提供Perl::Tidy和Perl::Critic配置.
现在我们遇到了附带评论的问题.附注是这样的:
my $counter = 0; # Reset counter
Run Code Online (Sandbox Code Playgroud)
我们宁愿根本没有侧面评论,因为在大多数情况下,它们可以写在有问题的代码之上,在那里它们更容易阅读.如果可能的话,一个Perl::Tidy解决方案将是完美的,这会将一个侧面评论移到它上面的一行,第二个最好的将是一个Perl::Critic政策(我在CPAN没有找到)和第三个最好的,最后一个将是开发人员在进行代码审查时要注意将这些意见指出.
是否可以用Perl::Tidy或实施Perl::Critic?
默认情况下,PerlTidy将在我的代码中排列分配.例如
PerlTidy改变了这个......
my $red = 1;
my $green = 2;
my $yellow = 3;
my $cyan = 4;
Run Code Online (Sandbox Code Playgroud)
......进入这...
my $red = 1;
my $green = 2;
my $yellow = 3;
my $cyan = 4;
Run Code Online (Sandbox Code Playgroud)
我该如何防止这种情况发生?我已经搜索了手册,但我找不到解决方案.
谢谢!