NAME
Perl::Critic::Pulp - some add-on perlcritic policies
DESCRIPTION
This is a collection of add-on policies for Perl::Critic
, summarized in the sections below. They're under a new "pulp" theme plus other themes according to their purpose (see "POLICY THEMES" in Perl::Critic).
Roughly half are code related and half cosmetic. You can always enable or disable the ones you do or don't want. It's normal to pick and choose what you want reported. There's a lot of perlcritic builtin and add-on policies and they range from helpful things catching problems, to the bizarre or restrictive, and in some cases are mutually contradictory! Many are intended as building blocks for enforcing a house style. If you try to pass everything then you give away big parts of the language, so if you're not turning off or customizing about half then either you're not trying or you're much too easily lead!
Bugs
- Miscellanea::TextDomainPlaceholders
-
Check keyword arguments to
__x
,__nx
, etc. - Modules::ProhibitUseQuotedVersion
-
Don't quote version requirement
use Foo '1.5'
- ValuesAndExpressions::ConstantBeforeLt
-
Avoid problems with
FOO < 123
- ValuesAndExpressions::NotWithCompare
-
Avoid problems with
! $x == $y
- ValuesAndExpressions::ProhibitFiletest_f
-
Don't use
-f
. - ValuesAndExpressions::UnexpandedSpecialLiteral
-
Literal use of
__PACKAGE__
etc.
Compatibility
- Compatibility::ConstantPragmaHash
-
Perl version for hash style multi-constants.
- Compatibility::Gtk2Constants
-
Gtk2 module version for its constants.
- Compatibility::PerlMinimumVersionAndWhy
-
Perl version declared against features used.
- Compatibility::PodMinimumVersion
-
Perl version declared against POD features used.
- Compatibility::ProhibitUnixDevNull
-
Prefer
File::Spec->devnull
over explicit /dev/null.
Efficiency
- Documentation::RequireEndBeforeLastPod
-
Put
__END__
before POD, at end of file. - Miscellanea::TextDomainUnused
-
Locale::TextDomain
imported but not used. - Modules::ProhibitPOSIXimport
-
Don't import the whole of
POSIX
.
Cosmetic
- Documentation::ProhibitBadAproposMarkup
-
Avoid C<> in NAME section, bad for man's "apropos" output.
- ValuesAndExpressions::ProhibitEmptyCommas
-
Stray consecutive commas
,,
- ValuesAndExpressions::ProhibitNullStatements
-
Stray semicolons
;
- ValuesAndExpressions::ProhibitUnknownBackslash
-
Unknown
\z
etc escapes in strings.
OTHER NOTES
In most of the perlcritic documentation, including the Pulp here, policy names appear without the full Perl::Critic::Policy::...
class name. In Emacs have a look at man-completion.el
to automatically get the man page from 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: which Emacs will recognise. See Perl::Critic::Violation for all the %
escapes.
verbose=%f:%l:%c:\n %P\n %m\n
perlcritic.el has patterns to match the builtin formats, but it's easier to print file:line:column: in the first place.
SEE ALSO
HOME PAGE
http://user42.tuxfamily.org/perl-critic-pulp/index.html
COPYRIGHT
Copyright 2008, 2009, 2010 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/>.