Perlcritic не распознает код, который был убран - PullRequest
4 голосов
/ 25 апреля 2019

Я использую 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

Спасибо

1 Ответ

1 голос
/ 14 мая 2019

Поместите ...

use strict;
use warnings;

... в начало файла, перед объявлением пакета, тогда у вас все будет хорошо.

Проверено на perlcritic v1.130

...