Perl::Critic::PolicySummary(3) | User Contributed Perl Documentation | Perl::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::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::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::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.105.
AUTHOR¶
Jeffrey Ryan Thalhammer <thaljef@cpan.org>
COPYRIGHT¶
Copyright (c) 2005-2009 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.
2010-12-13 | perl v5.10.1 |