We currently only run perlcritic at severity level 5, which is fairly permissive. I'd like to reduce that, ideally to, say, level 3, which is what I use for the buildfarm code.
But let's start by going to severity level 4. Give this perlcriticrc, derived from the buildfarm's: # for policy descriptions see # https://metacpan.org/release/Perl-Critic severity = 4 theme = core # allow octal constants with leading zeros [-ValuesAndExpressions::ProhibitLeadingZeros] # allow assignments to %ENV and %SIG without 'local' [Variables::RequireLocalizedPunctuationVars] allow = %ENV %SIG # allow 'no warnings qw(once) [TestingAndDebugging::ProhibitNoWarnings] allow = once # allow opened files to stay open for more than 9 lines of code [-InputOutput::RequireBriefOpen] Here's a summary of the perlcritic warnings: 39 Always unpack @_ first 30 Code before warnings are enabled 12 Subroutine "new" called using indirect syntax 9 Multiple "package" declarations 9 Expression form of "grep" 7 Symbols are exported by default 5 Warnings disabled 4 Magic variable "$/" should be assigned as "local" 4 Comma used to separate statements 2 Readline inside "for" loop 2 Pragma "constant" used 2 Mixed high and low-precedence booleans 2 Don't turn off strict for large blocks of code 1 Magic variable "@a" should be assigned as "local" 1 Magic variable "$|" should be assigned as "local" 1 Magic variable "$\" should be assigned as "local" 1 Magic variable "$?" should be assigned as "local" 1 Magic variable "$," should be assigned as "local" 1 Magic variable "$"" should be assigned as "local" 1 Expression form of "map" which isn't a huge number. I'm going to start posting patches to address these issues, and when we're done we can lower the severity level and start again on the level 3s :-) cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services