http://www.perlmonks.org?node_id=1005951

This is how I run perlcritic. It sorts the output by severity, and it makes it easy to access the POD for a given policy (via perldoc with a simple copy'n'paste in your shell). It also runs lint checking using B::Lint.
=head1 Name B<pcsort> - Sort perlcritic 'brutal' output by severity =head1 Description Input is a Perl script or module. Prints to STDOUT. Example: pcsort foo.pl Also runs perl -MO=Lint. See also ~/.perlcriticrc file =cut use warnings FATAL => 'all'; use strict; use Data::Dumper; $Data::Dumper::Sortkeys = 1; my $file = shift; my %hoa; my %pols; # These command line settings override same settings # in ~/.perlcriticrc file my @lines = qx(perlcritic --brutal --verbose 9 $file); for (@lines) { if (/ \[ ([\w:]+) \] .*? Severity : \s+ (\d) /x) { chomp; my $pol = $1; my $sev = $2; push @{ $hoa{$sev} }, $_; $pols{"perldoc Perl::Critic::Policy::$pol"}++; } } print Dumper(\%hoa); print 'TOTAL = ', scalar @lines, "\n"; print "$_\n" for sort keys %pols; my $lint = "perl -MO=Lint $file"; print "\n$lint\n"; print qx($lint 2>&1); # Make sure it all goes to STDOUT

Replies are listed 'Best First'.
Re: Sort and summarize perlcritic output
by Anonymous Monk on Nov 29, 2012 at 09:07 UTC
Re: Sort and summarize perlcritic output
by Tommy (Chaplain) on Jan 01, 2013 at 16:26 UTC

    This is really nice. Thank you.

    --
    Tommy
    $ perl -MMIME::Base64 -e 'print decode_base64 "YWNlQHRvbW15YnV0bGVyLm1lCg=="'