############################################################################## # $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/lib/Perl/Critic/PolicySummary.pod $ # $Date: 2007-10-30 10:30:06 -0500 (Tue, 30 Oct 2007) $ # $Author: clonezone $ # $Revision: 2008 $ ############################################################################## =for stopwords metachars =head1 NAME Perl::Critic::PolicySummary - Description of the bundled Policy modules =head1 DESCRIPTION The following Policy modules are distributed with Perl::Critic. The Policy modules have been categorized according to the table of contents in Damian Conway's book B. Since most coding standards take the form "do this..." or "don't do that...", I have adopted the convention of naming each module C or C. Each Policy is listed here with its default severity. If you don't agree with the default severity, you can change it in your F<.perlcriticrc> file. See the documentation of each module for its specific details. =head1 POLICIES =head2 L Use C instead of C in boolean context. [Severity 2] =head2 L Map blocks should have a single statement. [Severity 3] =head2 L Use 4-argument C instead of writing C. [Severity 3] =head2 L Forbid $b before $a in sort blocks. [Severity 1] =head2 L Use L instead of something like C. [Severity 5] =head2 L Write C instead of C. [Severity 5] =head2 L Write C instead of C. [Severity 2] =head2 L Write C<< eval { $foo->can($name) } >> instead of C. [Severity 3] =head2 L Write C<< eval { $foo->isa($pkg) } >> instead of C. [Severity 3] =head2 L Don't use C in void contexts. [Severity 3] =head2 L Don't use C in void contexts. [Severity 3] =head2 L Write C instead of C. [Severity 4] =head2 L Write C instead of C. [Severity 4] =head2 L Use C instead of <*>. [Severity 5] =head2 L Sort blocks should have a single statement. [Severity 3] =head2 L AUTOLOAD methods should be avoided. [Severity 3] =head2 L Employ C instead of C<@ISA>. [Severity 3] =head2 L Write C instead of just C. [Severity 5] =head2 L Use spaces instead of tabs. [Severity 3] =head2 L Write C instead of C. [Severity 1] =head2 L Write C instead of C<('foo', 'bar', 'baz')>. [Severity 2] =head2 L Don't use whitespace at the end of lines. [Severity 1] =head2 L Use the same newline through the source. [Severity 4] =head2 L Must run code through L. [Severity 1] =head2 L Put a comma at the end of every multi-line list declaration, including the last one. [Severity 1] =head2 L Write C instead of C. [Severity 2] =head2 L Don't write long "if-elsif-elsif-elsif-elsif...else" chains. [Severity 3] =head2 L Don't write deeply nested loops and conditionals. [Severity 3] =head2 L Don't modify C<$_> in list functions. [Severity 5] =head2 L Don't use operators like C, C, and C within C and C. [Severity 3] =head2 L Write C instead of C. [Severity 2] =head2 L Write C instead of C. [Severity 2] =head2 L Don't write code after an unconditional C. [Severity 4] =head2 L Write C instead of C. [Severity 2] =head2 L Check your spelling. [Severity 1] =head2 L All POD should be after C<__END__>. [Severity 1] =head2 L Organize your POD into the customary sections. [Severity 2] =head2 L Use functions from L instead of C or C. [Severity 3] =head2 L Discourage stuff like C<@files = `ls $directory`>. [Severity 3] =head2 L Write C instead of C. [Severity 5] =head2 L Use "<>" or "" or a prompting module instead of "". [Severity 4] =head2 L Use prompt() instead of -t. [Severity 5] =head2 L Use "local $/ = undef" or File::Slurp instead of joined readline. [Severity 3] =head2 L Never write C. [Severity 4] =head2 L Write C<< while( $line = <> ){...} >> instead of C<< for(<>){...} >>. [Severity 4] =head2 L Write C<< open $fh, q{<}, $filename; >> instead of C<< open $fh, "<$filename"; >>. [Severity 5] =head2 L Close filehandles as soon as possible after opening them. [Severity 4] =head2 L Write C<< my $error = close $fh; >> instead of C<< close $fh; >>. [Severity 2] =head2 L Write C<< my $error = open $fh, $mode, $filename; >> instead of C<< open $fh, $mode, $filename; >>. [Severity 3] =head2 L Return value of flagged function ignored. [Severity 1] =head2 L Write C instead of C. [Severity 1] =head2 L Do not use C. [Severity 3] =head2 L Do not use C. [Severity 2] =head2 L Put source-control keywords in every file. [Severity 2] =head2 L Export symbols via C<@EXPORT_OK> or C<%EXPORT_TAGS> instead of C<@EXPORT>. [Severity 4] =head2 L Ban modules that aren't blessed by your shop. [Severity 5] =head2 L Minimize complexity in code that is B of subroutines. [Severity 3] =head2 L Put packages (especially subclasses) in separate files. [Severity 4] =head2 L Write C instead of C. [Severity 5] =head2 L End each module with an explicitly C<1;> instead of some funky expression. [Severity 4] =head2 L Always make the C explicit. [Severity 4] =head2 L Package declaration must match filename. [Severity 5] =head2 L Give every module a C<$VERSION> number. [Severity 2] =head2 L Don't use vague variable or subroutine names like 'last' or 'record'. [Severity 3] =head2 L Write C instead of C. [Severity 1] =head2 L Write C<$my_variable = 42> instead of C<$MyVariable = 42>. [Severity 1] =head2 L Write C<@{ $array_ref }> instead of C<@$array_ref>. [Severity 2] =head2 L Capture variable used outside conditional. [Severity 3] =head2 L Split long regexps into smaller C chunks. [Severity 3] =head2 L Use named character classes instead of explicit character lists. [Severity 1] =head2 L Use character classes for literal metachars instead of escapes. [Severity 1] =head2 L Use C or hash instead of fixed-pattern regexps. [Severity 2] =head2 L Use C<[abc]> instead of C. [Severity 1] =head2 L Only use a capturing group if you plan to use the captured value. [Severity 3] =head2 L Use only C or C<{}> to delimit regexps. [Severity 1] =head2 L Use C<{> and C<}> to delimit multi-line regexps. [Severity 1] =head2 L Always use the C modifier with regular expressions. [Severity 3] =head2 L Always use the C modifier with regular expressions. [Severity 2] =head2 L Don't call functions with a leading ampersand sigil. [Severity 2] =head2 L Don't declare your own C function. [Severity 4] =head2 L Minimize complexity by factoring code into smaller subroutines. [Severity 3] =head2 L Return failure with bare C instead of C. [Severity 5] =head2 L C. [Severity 5] =head2 L Too many arguments. [Severity 3] =head2 L Don't write C. [Severity 5] =head2 L Prevent access to private subs in other packages. [Severity 3] =head2 L Always unpack C<@_> first. [Severity 4] =head2 L End every path through a subroutine with an explicit C statement. [Severity 4] =head2 L Prohibit various flavors of C. [Severity 5] =head2 L Prohibit various flavors of C. [Severity 4] =head2 L Don't turn off strict for large blocks of code. [Severity 4] =head2 L Tests should all have labels. [Severity 3] =head2 L Always C. [Severity 5] =head2 L Always C. [Severity 4] =head2 L Don't use the comma operator as a statement separator. [Severity 4] =head2 L Don't C<< use constant $FOO => 15 >>. [Severity 4] =head2 L Write C instead of C<''>. [Severity 2] =head2 L Write C<"\N{DELETE}"> instead of C<"\x7F">, etc. [Severity 2] =head2 L Use concatenation or HEREDOCs instead of literal line breaks in strings. [Severity 3] =head2 L Always use single quotes for literal strings. [Severity 1] =head2 L Write C instead of C<0755>. [Severity 5] =head2 L Long chains of method calls indicate tightly coupled code. [Severity 2] =head2 L Don't mix numeric operators with string operands, or vice-versa. [Severity 3] =head2 L Write C< !$foo && $bar || $baz > instead of C< not $foo && $bar or $baz>. [Severity 4] =head2 L Use C or C instead of quotes for awkward-looking strings. [Severity 2] =head2 L Don't use quotes (C<'>, C<">, C<`>) as delimiters for the quote-like operators. [Severity 3] =head2 L Don't use strings like C or C<1.4.5> when including other modules. [Severity 3] =head2 L Warns that you might have used single quotes when you really wanted double-quotes. [Severity 1] =head2 L Write C< 141_234_397.0145 > instead of C< 141234397.0145 >. [Severity 2] =head2 L Write C< print <<'THE_END' > or C< print <<"THE_END" >. [Severity 3] =head2 L Write C< <<'THE_END'; > instead of C< <<'theEnd'; >. [Severity 2] =head2 L Do not write C< my $foo = $bar if $baz; >. [Severity 5] =head2 L Use C instead of C, except when you have to. [Severity 2] =head2 L Avoid C<$`>, C<$&>, C<$'> and their English equivalents. [Severity 4] =head2 L Eliminate globals declared with C or C. [Severity 3] =head2 L Use double colon (::) to separate package name components instead of single quotes ('). [Severity 2] =head2 L Write C<$EVAL_ERROR> instead of C<$@>. [Severity 2] =head2 L Prevent access to private vars in other packages. [Severity 3] =head2 L Write C instead of just C. [Severity 3] =head2 L Write C instead of C. [Severity 5] =head2 L Magic variables should be assigned as "local". [Severity 4] =head2 L Negative array index should be used. [Severity 4] =head1 AUTHOR Jeffrey Ryan Thalhammer =head1 COPYRIGHT Copyright (c) 2005-2007 Jeffrey Ryan Thalhammer. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the LICENSE file included with this module. =cut ############################################################################## # Local Variables: # mode: cperl # cperl-indent-level: 4 # fill-column: 78 # indent-tabs-mode: nil # c-indentation-style: bsd # End: # ex: set ts=8 sts=4 sw=4 tw=78 ft=pod expandtab :