Я использую perlcritic с perltidy , и в то время как другие правила применяются, я получаю следующее сообщение об ошибке:
Code is not tidy at line 1, near 'package MyPackage;'.
Я запустил perltidy, чтобы привести в порядок код, но проблема все еще сохраняется. В файле .perlcriticrc я добавил следующее правило с путем к файлу .perltidyrc.
[CodeLayout::RequireTidyCode]
perltidyrc = /path/to/.perltidyrc
Я использую perlcritic вот так:
perlcritic --profile .perlcriticrc file.pm
Я уверен, что perlcritic использует файл rc, поскольку я могу включать и выключать правила, внося изменения в содержимое файла. Я также уверен, что perltidy использует правильный rc-файл таким же образом.
Как я могу предотвратить эту ошибку, не отключая правило RequireTidyCode?
Я добавил пример, чтобы воссоздать проблему, сократив фактические файлы до минимума, где я все еще получаю ошибку. Вот как я это запускаю:
cd /tmp
perltidy -b -nst TestCritic.pm
perlcritic --profile /tmp/.perlcriticrc /tmp/TestCritic.pm
Первая строка вывода критика:
Code is not tidy at line 1, near 'package TestCritic;'.
Это файлы:
TestCritic.pm
package TestCritic;
sub startup {
my $self = shift;
my $config;
my $service_name;
if ( defined $ENV{MYVAR} ) {
if ( $ENV{MYVAR} eq 'TESTVAL' ) {
$config = { Config => { file => '/tmp/tmp.txt' } };
$service_name = 'TestCritic.' . $$;
}
}
}
1;
.perltidyrc
-pbp
-lp
-bar
-l=120
-nolc
-vmll
-cti=1
-pt=0
-vt=0
-vtc=0
.perlcriticrc
# Show all errors
severity = 1
verbose = 11
theme = core + pbp + bugs + maintenance + cosmetic + complexity + security + tests
exclude = Subroutines::ProhibitCallsToUndeclaredSubs
Версии:
perlcritic v1.132
Perltidy V20181120
Спасибо