使用Perl::Tidy实现一致的模块缩进

zbsbpyhn  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(143)

我在几个平台(不同的Linux发行版和macOS)上测试我的软件时使用Perl::Tidy和Perl::Critic。
我现在从Linux和macOS上的Perl::Tidy得到了不同的格式,这使得Perl::Critic失败,因为代码不整洁。
不同之处在于所用模块的参数缩进。
例如,在Linux(默认为Perl::Tidy v20220217的Fedora)上:

use Carp;
use English qw(-no_match_vars);
use POSIX qw(uname);
use Readonly;

在macOS上运行Perl::Tidy v20220613

use Carp;
use English qw(-no_match_vars);
use POSIX   qw(uname);           ## qw is indented to be aligned
use Readonly;

我没有找到定义行为的选项,也无法在运行测试的所有系统上控制Perl::Tidy的版本。
有没有一种方法可以让Perl::Tidy不管版本如何都一致地缩进这些行?有没有一个命令行选项是我遗漏的?
目前,我只是忽略了这一阻碍:

#<<<  Perl::Tidy indents "qw" differently on older versions
use Carp;
use English qw(-no_match_vars);
use POSIX   qw(uname);
use Readonly;
#>>>

但也许有更好的办法。

mec1mxoz

mec1mxoz1#

20220613版本添加了一个新选项来控制此对齐。
为'use'语句中的qw引号和空括号添加了垂直对齐方式(请参阅问题#git 93)。默认情况下,这种新的对齐方式为'on',并将更改如下所示的格式。如果不希望这样,可以使用参数-vxl ='q'(--valign-exclusion-list ='q')将其关闭。
第一次
因此,如果你在Mac上使用-vxl='q'选项调用perltidy,你会得到旧的行为。如果这是作为自动过程的一部分完成的,也许调整正在运行perltidy的任何东西,首先检查版本,看看是否应该自动包括该选项。

相关问题