Perl::Critic::PolicySuUseryContributed Perl DocuPerl::Critic::PolicySummary(3)



NAME
       Perl::Critic::PolicySummary - Descriptions of the Policy modules
       included with Perl::Critic itself.

DESCRIPTION
       The following Policy modules are distributed with Perl::Critic.  (There
       are additional Policies that can be found in add-on distributions.)
       The Policy modules have been categorized according to the table of
       contents in Damian Conway's book Perl Best Practices.  Since most
       coding standards take the form "do this..." or "don't do that...", I
       have adopted the convention of naming each module "RequireSomething" or
       "ProhibitSomething".  Each Policy is listed here with its default
       severity.  If you don't agree with the default severity, you can change
       it in your .perlcriticrc file.  See the documentation of each module
       for its specific details.

POLICIES
   Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep
       Use "List::MoreUtils::any" instead of "grep" in boolean context.
       [Severity 2]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitComplexMappings
       Map blocks should have a single statement. [Severity 3]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitLvalueSubstr
       Use 4-argument "substr" instead of writing "substr($foo, 2, 6) = $bar".
       [Severity 3]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock
       Forbid $b before $a in sort blocks. [Severity 1]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitSleepViaSelect
       Use Time::HiRes instead of something like "select(undef, undef, undef,
       .05)". [Severity 5]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitStringyEval
       Write "eval { my $foo; bar($foo) }" instead of "eval "my $foo;
       bar($foo);"". [Severity 5]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitStringySplit
       Write "split /-/, $string" instead of "split '-', $string". [Severity
       2]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalCan
       Write "eval { $foo->can($name) }" instead of "UNIVERSAL::can($foo,
       $name)". [Severity 3]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalIsa
       Write "eval { $foo->isa($pkg) }" instead of "UNIVERSAL::isa($foo,
       $pkg)". [Severity 3]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidGrep
       Don't use "grep" in void contexts. [Severity 3]

   Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidMap
       Don't use "map" in void contexts. [Severity 3]

   Perl::Critic::Policy::BuiltinFunctions::RequireBlockGrep
       Write "grep { $_ =~ /$pattern/ } @list" instead of "grep /$pattern/,
       @list". [Severity 4]

   Perl::Critic::Policy::BuiltinFunctions::RequireBlockMap
       Write "map { $_ =~ /$pattern/ } @list" instead of "map /$pattern/,
       @list". [Severity 4]

   Perl::Critic::Policy::BuiltinFunctions::RequireGlobFunction
       Use "glob q{*}" instead of <*>. [Severity 5]

   Perl::Critic::Policy::BuiltinFunctions::RequireSimpleSortBlock
       Sort blocks should have a single statement. [Severity 3]

   Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading
       AUTOLOAD methods should be avoided. [Severity 3]

   Perl::Critic::Policy::ClassHierarchies::ProhibitExplicitISA
       Employ "use base" instead of @ISA. [Severity 3]

   Perl::Critic::Policy::ClassHierarchies::ProhibitOneArgBless
       Write "bless {}, $class;" instead of just "bless {};". [Severity 5]

   Perl::Critic::Policy::CodeLayout::ProhibitHardTabs
       Use spaces instead of tabs. [Severity 3]

   Perl::Critic::Policy::CodeLayout::ProhibitParensWithBuiltins
       Write "open $handle, $path" instead of "open($handle, $path)".
       [Severity 1]

   Perl::Critic::Policy::CodeLayout::ProhibitQuotedWordLists
       Write "qw(foo bar baz)" instead of "('foo', 'bar', 'baz')". [Severity
       2]

   Perl::Critic::Policy::CodeLayout::ProhibitTrailingWhitespace
       Don't use whitespace at the end of lines. [Severity 1]

   Perl::Critic::Policy::CodeLayout::RequireConsistentNewlines
       Use the same newline through the source. [Severity 4]

   Perl::Critic::Policy::CodeLayout::RequireTidyCode
       Must run code through perltidy. [Severity 1]

   Perl::Critic::Policy::CodeLayout::RequireTrailingCommas
       Put a comma at the end of every multi-line list declaration, including
       the last one. [Severity 1]

   Perl::Critic::Policy::ControlStructures::ProhibitCStyleForLoops
       Write "for(0..20)" instead of "for($i=0; $i<=20; $i++)". [Severity 2]

   Perl::Critic::Policy::ControlStructures::ProhibitCascadingIfElse
       Don't write long "if-elsif-elsif-elsif-elsif...else" chains. [Severity
       3]

   Perl::Critic::Policy::ControlStructures::ProhibitDeepNests
       Don't write deeply nested loops and conditionals. [Severity 3]

   Perl::Critic::Policy::ControlStructures::ProhibitLabelsWithSpecialBlockNames
       Don't use labels that are the same as the special block names.
       [Severity 4]

   Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions
       Don't modify $_ in list functions. [Severity 5]

   Perl::Critic::Policy::ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
       Don't use operators like "not", "!~", and "le" within "until" and
       "unless". [Severity 3]

   Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls
       Write "if($condition){ do_something() }" instead of "do_something() if
       $condition". [Severity 2]

   Perl::Critic::Policy::ControlStructures::ProhibitUnlessBlocks
       Write "if(! $condition)" instead of "unless($condition)". [Severity 2]

   Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode
       Don't write code after an unconditional "die, exit, or next". [Severity
       4]

   Perl::Critic::Policy::ControlStructures::ProhibitUntilBlocks
       Write "while(! $condition)" instead of "until($condition)". [Severity
       2]

   Perl::Critic::Policy::Documentation::PodSpelling
       Check your spelling. [Severity 1]

   Perl::Critic::Policy::Documentation::RequirePackageMatchesPodName
       The "=head1 NAME" section should match the package. [Severity 1]

   Perl::Critic::Policy::Documentation::RequirePodAtEnd
       All POD should be after "__END__". [Severity 1]

   Perl::Critic::Policy::Documentation::RequirePodLinksIncludeText
       Provide text to display with your pod links. [Severity 2]

   Perl::Critic::Policy::Documentation::RequirePodSections
       Organize your POD into the customary sections. [Severity 2]

   Perl::Critic::Policy::ErrorHandling::RequireCarping
       Use functions from Carp instead of "warn" or "die". [Severity 3]

   Perl::Critic::Policy::ErrorHandling::RequireCheckingReturnValueOfEval
       You can't depend upon the value of $@/$EVAL_ERROR to tell whether an
       "eval" failed. [Severity 3]

   Perl::Critic::Policy::InputOutput::ProhibitBacktickOperators
       Discourage stuff like "@files = `ls $directory`". [Severity 3]

   Perl::Critic::Policy::InputOutput::ProhibitBarewordFileHandles
       Write "open my $fh, q{<}, $filename;" instead of "open FH, q{<},
       $filename;". [Severity 5]

   Perl::Critic::Policy::InputOutput::ProhibitExplicitStdin
       Use "<>" or "<ARGV>" or a prompting module instead of "<STDIN>".
       [Severity 4]

   Perl::Critic::Policy::InputOutput::ProhibitInteractiveTest
       Use prompt() instead of -t. [Severity 5]

   Perl::Critic::Policy::InputOutput::ProhibitJoinedReadline
       Use "local $/ = undef" or File::Slurp instead of joined readline.
       [Severity 3]

   Perl::Critic::Policy::InputOutput::ProhibitOneArgSelect
       Never write "select($fh)". [Severity 4]

   Perl::Critic::Policy::InputOutput::ProhibitReadlineInForLoop
       Write "while( $line = <> ){...}" instead of "for(<>){...}". [Severity
       4]

   Perl::Critic::Policy::InputOutput::ProhibitTwoArgOpen
       Write "open $fh, q{<}, $filename;" instead of "open $fh,
       "<$filename";". [Severity 5]

   Perl::Critic::Policy::InputOutput::RequireBracedFileHandleWithPrint
       Write "print {$FH} $foo, $bar;" instead of "print $FH $foo, $bar;".
       [Severity 1]

   Perl::Critic::Policy::InputOutput::RequireBriefOpen
       Close filehandles as soon as possible after opening them. [Severity 4]

   Perl::Critic::Policy::InputOutput::RequireCheckedClose
       Write "my $error = close $fh;" instead of "close $fh;". [Severity 2]

   Perl::Critic::Policy::InputOutput::RequireCheckedOpen
       Write "my $error = open $fh, $mode, $filename;" instead of "open $fh,
       $mode, $filename;". [Severity 3]

   Perl::Critic::Policy::InputOutput::RequireCheckedSyscalls
       Return value of flagged function ignored. [Severity 1]

   Perl::Critic::Policy::Miscellanea::ProhibitFormats
       Do not use "format". [Severity 3]

   Perl::Critic::Policy::Miscellanea::ProhibitTies
       Do not use "tie". [Severity 2]

   Perl::Critic::Policy::Miscellanea::ProhibitUnrestrictedNoCritic
       Forbid a bare "## no critic" [Severity 3]

   Perl::Critic::Policy::Miscellanea::ProhibitUselessNoCritic
       Remove ineffective "## no critic" annotations. [Severity 2]

   Perl::Critic::Policy::Miscellanea::RequireRcsKeywords
       Put source-control keywords in every file. [Severity 2]

   Perl::Critic::Policy::Modules::ProhibitAutomaticExportation
       Export symbols via @EXPORT_OK or %EXPORT_TAGS instead of @EXPORT.
       [Severity 4]

   Perl::Critic::Policy::Modules::ProhibitEvilModules
       Ban modules that aren't blessed by your shop. [Severity 5]

   Perl::Critic::Policy::Modules::ProhibitExcessMainComplexity
       Minimize complexity in code that is outside of subroutines. [Severity
       3]

   Perl::Critic::Policy::Modules::ProhibitMultiplePackages
       Put packages (especially subclasses) in separate files. [Severity 4]

   Perl::Critic::Policy::Modules::RequireBarewordIncludes
       Write "require Module" instead of "require 'Module.pm'". [Severity 5]

   Perl::Critic::Policy::Modules::RequireEndWithOne
       End each module with an explicitly "1;" instead of some funky
       expression. [Severity 4]

   Perl::Critic::Policy::Modules::RequireExplicitPackage
       Always make the "package" explicit. [Severity 4]

   Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage
       Package declaration must match filename. [Severity 5]

   Perl::Critic::Policy::Modules::RequireNoMatchVarsWithUseEnglish
       "use English" must be passed a "-no_match_vars" argument. [Severity 2]

   Perl::Critic::Policy::Modules::RequireVersionVar
       Give every module a $VERSION number. [Severity 2]

   Perl::Critic::Policy::NamingConventions::Capitalization
       Distinguish different program components by case. [Severity 1]

   Perl::Critic::Policy::NamingConventions::ProhibitAmbiguousNames
       Don't use vague variable or subroutine names like 'last' or 'record'.
       [Severity 3]

   Perl::Critic::Policy::Objects::ProhibitIndirectSyntax
       Prohibit indirect object call syntax. [Severity 4]

   Perl::Critic::Policy::References::ProhibitDoubleSigils
       Write "@{ $array_ref }" instead of @$array_ref. [Severity 2]

   Perl::Critic::Policy::RegularExpressions::ProhibitCaptureWithoutTest
       Capture variable used outside conditional. [Severity 3]

   Perl::Critic::Policy::RegularExpressions::ProhibitComplexRegexes
       Split long regexps into smaller "qr//" chunks. [Severity 3]

   Perl::Critic::Policy::RegularExpressions::ProhibitEnumeratedClasses
       Use named character classes instead of explicit character lists.
       [Severity 1]

   Perl::Critic::Policy::RegularExpressions::ProhibitEscapedMetacharacters
       Use character classes for literal meta-characters instead of escapes.
       [Severity 1]

   Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches
       Use "eq" or hash instead of fixed-pattern regexps. [Severity 2]

   Perl::Critic::Policy::RegularExpressions::ProhibitSingleCharAlternation
       Use "[abc]" instead of "a|b|c". [Severity 1]

   Perl::Critic::Policy::RegularExpressions::ProhibitUnusedCapture
       Only use a capturing group if you plan to use the captured value.
       [Severity 3]

   Perl::Critic::Policy::RegularExpressions::ProhibitUnusualDelimiters
       Use only "//" or "{}" to delimit regexps. [Severity 1]

   Perl::Critic::Policy::RegularExpressions::RequireBracesForMultiline
       Use "{" and "}" to delimit multi-line regexps. [Severity 1]

   Perl::Critic::Policy::RegularExpressions::RequireDotMatchAnything
       Always use the "/s" modifier with regular expressions. [Severity 2]

   Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting
       Always use the "/x" modifier with regular expressions. [Severity 3]

   Perl::Critic::Policy::RegularExpressions::RequireLineBoundaryMatching
       Always use the "/m" modifier with regular expressions. [Severity 2]

   Perl::Critic::Policy::Subroutines::ProhibitAmpersandSigils
       Don't call functions with a leading ampersand sigil. [Severity 2]

   Perl::Critic::Policy::Subroutines::ProhibitBuiltinHomonyms
       Don't declare your own "open" function. [Severity 4]

   Perl::Critic::Policy::Subroutines::ProhibitExcessComplexity
       Minimize complexity by factoring code into smaller subroutines.
       [Severity 3]

   Perl::Critic::Policy::Subroutines::ProhibitExplicitReturnUndef
       Return failure with bare "return" instead of "return undef". [Severity
       5]

   Perl::Critic::Policy::Subroutines::ProhibitManyArgs
       Too many arguments. [Severity 3]

   Perl::Critic::Policy::Subroutines::ProhibitNestedSubs
       "sub never { sub correct {} }". [Severity 5]

   Perl::Critic::Policy::Subroutines::ProhibitReturnSort
       Behavior of "sort" is not defined if called in scalar context.
       [Severity 5]

   Perl::Critic::Policy::Subroutines::ProhibitSubroutinePrototypes
       Don't write "sub my_function (@@) {}". [Severity 5]

   Perl::Critic::Policy::Subroutines::ProhibitUnusedPrivateSubroutines
       Prevent unused private subroutines. [Severity 3]

   Perl::Critic::Policy::Subroutines::ProtectPrivateSubs
       Prevent access to private subs in other packages. [Severity 3]

   Perl::Critic::Policy::Subroutines::RequireArgUnpacking
       Always unpack @_ first. [Severity 4]

   Perl::Critic::Policy::Subroutines::RequireFinalReturn
       End every path through a subroutine with an explicit "return"
       statement. [Severity 4]

   Perl::Critic::Policy::TestingAndDebugging::ProhibitNoStrict
       Prohibit various flavors of "no strict". [Severity 5]

   Perl::Critic::Policy::TestingAndDebugging::ProhibitNoWarnings
       Prohibit various flavors of "no warnings". [Severity 4]

   Perl::Critic::Policy::TestingAndDebugging::ProhibitProlongedStrictureOverride
       Don't turn off strict for large blocks of code. [Severity 4]

   Perl::Critic::Policy::TestingAndDebugging::RequireTestLabels
       Tests should all have labels. [Severity 3]

   Perl::Critic::Policy::TestingAndDebugging::RequireUseStrict
       Always "use strict". [Severity 5]

   Perl::Critic::Policy::TestingAndDebugging::RequireUseWarnings
       Always "use warnings". [Severity 4]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitCommaSeparatedStatements
       Don't use the comma operator as a statement separator. [Severity 4]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitComplexVersion
       Prohibit version values from outside the module. [Severity 3]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitConstantPragma
       Don't "use constant FOO => 15". [Severity 4]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitEmptyQuotes
       Write "q{}" instead of ''. [Severity 2]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitEscapedCharacters
       Write "\N{DELETE}" instead of "\x7F", etc. [Severity 2]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitImplicitNewlines
       Use concatenation or HEREDOCs instead of literal line breaks in
       strings. [Severity 3]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitInterpolationOfLiterals
       Always use single quotes for literal strings. [Severity 1]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitLeadingZeros
       Write "oct(755)" instead of 0755. [Severity 5]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
       Long chains of method calls indicate tightly coupled code. [Severity 2]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers
       Don't use values that don't explain themselves. [Severity 2]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators
       Don't mix numeric operators with string operands, or vice-versa.
       [Severity 3]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitMixedBooleanOperators
       Write " !$foo && $bar || $baz " instead of " not $foo && $bar or $baz".
       [Severity 4]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitNoisyQuotes
       Use "q{}" or "qq{}" instead of quotes for awkward-looking strings.
       [Severity 2]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
       Don't use quotes ("'", """, "`") as delimiters for the quote-like
       operators. [Severity 3]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
       Don't write " print <<'__END__' ". [Severity 3]

   Perl::Critic::Policy::ValuesAndExpressions::ProhibitVersionStrings
       Don't use strings like "v1.4" or 1.4.5 when including other modules.
       [Severity 3]

   Perl::Critic::Policy::ValuesAndExpressions::RequireConstantVersion
       Require $VERSION to be a constant rather than a computed value.
       [Severity 2]

   Perl::Critic::Policy::ValuesAndExpressions::RequireInterpolationOfMetachars
       Warns that you might have used single quotes when you really wanted
       double-quotes. [Severity 1]

   Perl::Critic::Policy::ValuesAndExpressions::RequireNumberSeparators
       Write " 141_234_397.0145 " instead of  141234397.0145 . [Severity 2]

   Perl::Critic::Policy::ValuesAndExpressions::RequireQuotedHeredocTerminator
       Write " print <<'THE_END' " or " print <<"THE_END" ". [Severity 3]

   Perl::Critic::Policy::ValuesAndExpressions::RequireUpperCaseHeredocTerminator
       Write " <<'THE_END'; " instead of " <<'theEnd'; ". [Severity 2]

   Perl::Critic::Policy::Variables::ProhibitConditionalDeclarations
       Do not write " my $foo = $bar if $baz; ". [Severity 5]

   Perl::Critic::Policy::Variables::ProhibitEvilVariables
       Ban variables that aren't blessed by your shop. [Severity 5]

   Perl::Critic::Policy::Variables::ProhibitLocalVars
       Use "my" instead of "local", except when you have to. [Severity 2]

   Perl::Critic::Policy::Variables::ProhibitMatchVars
       Avoid "$`", $&, "$'" and their English equivalents. [Severity 4]

   Perl::Critic::Policy::Variables::ProhibitPackageVars
       Eliminate globals declared with "our" or "use vars". [Severity 3]

   Perl::Critic::Policy::Variables::ProhibitPerl4PackageNames
       Use double colon (::) to separate package name components instead of
       single quotes ('). [Severity 2]

   Perl::Critic::Policy::Variables::ProhibitPunctuationVars
       Write $EVAL_ERROR instead of $@. [Severity 2]

   Perl::Critic::Policy::Variables::ProhibitReusedNames
       Do not reuse a variable name in a lexical scope [Severity 3]

   Perl::Critic::Policy::Variables::ProhibitUnusedVariables
       Don't ask for storage you don't need. [Severity 3]

   Perl::Critic::Policy::Variables::ProtectPrivateVars
       Prevent access to private vars in other packages. [Severity 3]

   Perl::Critic::Policy::Variables::RequireInitializationForLocalVars
       Write "local $foo = $bar;" instead of just "local $foo;". [Severity 3]

   Perl::Critic::Policy::Variables::RequireLexicalLoopIterators
       Write "for my $element (@list) {...}" instead of "for $element (@list)
       {...}". [Severity 5]

   Perl::Critic::Policy::Variables::RequireLocalizedPunctuationVars
       Magic variables should be assigned as "local". [Severity 4]

   Perl::Critic::Policy::Variables::RequireNegativeIndices
       Negative array index should be used. [Severity 4]

VERSION
       This is part of Perl::Critic version 1.108.

AUTHOR
       Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>

COPYRIGHT
       Copyright (c) 2005-2010 Imaginative Software Systems.  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.



perl v5.12.2                      2013-02-26    Perl::Critic::PolicySummary(3)
