| Perl-Critic-Pulp documentation | view source | Contained in the Perl-Critic-Pulp distribution. |
Perl::Critic::Pulp - some add-on perlcritic policies
This is a collection of add-on policies for Perl::Critic, summarized
below. They're under a "pulp" theme plus other themes according to their
purpose (see POLICY THEMES in Perl::Critic).
Check keyword arguments to __x, __nx, etc.
Don't quote version requirement use Foo '1.5'
$VERSION a plain number for comparisons and checking.
Avoid problems with FOO < 123
Avoid problems with ! $x == $y
Dubious @array=[1,2,3] array/arrayref assignment.
Don't use -f.
Literal use of __PACKAGE__ etc.
Perl version for hash style multi-constants.
Perl version for constants with leading underscore.
Gtk2 module version for its constants.
Perl version declared against features used.
Perl version declared against POD features used.
Prefer File::Spec->devnull over explicit /dev/null.
Put __END__ before POD, at end of file.
Locale::TextDomain imported but not used.
Don't import the whole of POSIX.
Semicolon ; on the last statement of a subroutine or block.
Stray consecutive commas ,,
Stray semicolons ;
Unknown \z etc escapes in strings.
Double-colon barewords Foo::Bar::
No #! interpreter line in .pm files.
Unbalanced or mismatched ( ) parens, brackets and braces.
Put commas or some text in between adjacent L<> links.
Avoid C<> in NAME section, bad for man's "apropos" output.
Don't end paragraph with ".." (stray extra dot).
Verbatim paragraphs not expanding C<> etc markup.
Use L<> markup on URLs.
You can always enable or disable the policies you do or don't want (see CONFIGURATION in Perl::Critic). If you haven't already realized, there's a wide range of builtin and add-on perlcritic policies ranging from bug catching to the bizarre or deliberately restrictive. You're not meant to pass all of them and some may even be mutually contradictory.
The restrictive policies are meant as building blocks for a limited house
style. ProhibitBarewordDoubleColon above is an example of this,
something like ProhibitUnlessBlocks is another. They're usually a matter
of personal preference (and non de gustibus disputandum), but following all
gives away big parts of the language and ends up with very un-typical code.
Some policies are geared a bit towards beginners.
ProhibitUnknownBackslash above or RequireInitializationForLocalVars
are along those lines. If you know what you're doing there may be good
backslashing the prohibition doesn't know, and local variable initializers
make no sense for output variables like $! when you get to the level of
using local to preserve such values.
In general the POD docs are supposed to explain the motivation so you can see if you want it or not, but if you're not turning off or drastically customizing about half of all policies then you're either not trying or you're much too easily lead!
In most of the perlcritic documentation, including the Pulp stuff here,
policy names appear without the full Perl::Critic::Policy::... class
part. In Emacs try man-completion.el to have M-x man automatically
expand a suffix part at point, or ffap-perl-module.el to go to the source
similarly.
http://user42.tuxfamily.org/man-completion/index.html
http://user42.tuxfamily.org/ffap-perl-module/index.html
In perlcritic's output you can ask for %P for the full policy name to copy or follow. Here's a good format you can put in your .perlcriticrc, including file:line:column: style Emacs will recognise.
verbose=%f:%l:%c:\n %P\n %m\n
See Perl::Critic::Violation for all the % escapes. perlcritic.el
has patterns for Emacs to match the builtin perlcritic formats, but it's
easier to print file:line:column:.
http://user42.tuxfamily.org/perl-critic-pulp/index.html
Copyright 2008, 2009, 2010, 2011 Kevin Ryde
Perl-Critic-Pulp is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
Perl-Critic-Pulp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Perl-Critic-Pulp. If not, see <http://www.gnu.org/licenses/>.
| Perl-Critic-Pulp documentation | view source | Contained in the Perl-Critic-Pulp distribution. |