Perlcritic无法识别整理过的代码

时间:2019-04-25 14:12:40

标签: perl perl-critic perl-tidy

我将perlcriticperltidy一起使用,并且在应用其他规则的同时,得到以下错误消息:

Code is not tidy at line 1, near 'package MyPackage;'.

我一直在精心整理代码,但仍然遇到问题。在.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 完美v20181120

谢谢

1 个答案:

答案 0 :(得分:1)

放入...

use strict;
use warnings;

...在文件顶部,在声明包之前,您应该会很好。

经过perlcritic v1.130测试