-
-
11 Aug 2015 06:48:47 UTC
- Distribution: Perl-Critic
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (4010 / 8 / 0)
- Kwalitee
Bus factor: 2- 90.03% Coverage
- License: perl_5
- Activity
24 month- Tools
- Download (631.4KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
and 1 contributors-
Jeffrey Thalhammer
- Dependencies
- B::Keywords
- Carp
- Config::Tiny
- Email::Address
- English
- Exception::Class
- Exporter
- File::Basename
- File::Find
- File::HomeDir
- File::Path
- File::Spec
- File::Spec::Unix
- File::Temp
- File::Which
- Getopt::Long
- IO::String
- IPC::Open2
- List::MoreUtils
- List::Util
- Module::Pluggable
- PPI
- PPI::Document
- PPI::Document::File
- PPI::Node
- PPI::Token::Quote::Single
- PPI::Token::Whitespace
- PPIx::Regexp
- PPIx::Utilities::Node
- PPIx::Utilities::Statement
- Perl::Tidy
- Pod::Parser
- Pod::PlainText
- Pod::Select
- Pod::Spell
- Pod::Usage
- Readonly
- Scalar::Util
- String::Format
- Task::Weaken
- Term::ANSIColor
- Test::Builder
- Text::ParseWords
- base
- charnames
- overload
- strict
- version
- warnings
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
- NAME
- DESCRIPTION
- POLICIES
- BuiltinFunctions::ProhibitBooleanGrep
- BuiltinFunctions::ProhibitComplexMappings
- BuiltinFunctions::ProhibitLvalueSubstr
- BuiltinFunctions::ProhibitReverseSortBlock
- BuiltinFunctions::ProhibitSleepViaSelect
- BuiltinFunctions::ProhibitStringyEval
- BuiltinFunctions::ProhibitStringySplit
- BuiltinFunctions::ProhibitUniversalCan
- BuiltinFunctions::ProhibitUniversalIsa
- BuiltinFunctions::ProhibitUselessTopic
- BuiltinFunctions::ProhibitVoidGrep
- BuiltinFunctions::ProhibitVoidMap
- BuiltinFunctions::RequireBlockGrep
- BuiltinFunctions::RequireBlockMap
- BuiltinFunctions::RequireGlobFunction
- BuiltinFunctions::RequireSimpleSortBlock
- ClassHierarchies::ProhibitAutoloading
- ClassHierarchies::ProhibitExplicitISA
- ClassHierarchies::ProhibitOneArgBless
- CodeLayout::ProhibitHardTabs
- CodeLayout::ProhibitParensWithBuiltins
- CodeLayout::ProhibitQuotedWordLists
- CodeLayout::ProhibitTrailingWhitespace
- CodeLayout::RequireConsistentNewlines
- CodeLayout::RequireTidyCode
- CodeLayout::RequireTrailingCommas
- ControlStructures::ProhibitCStyleForLoops
- ControlStructures::ProhibitCascadingIfElse
- ControlStructures::ProhibitDeepNests
- ControlStructures::ProhibitLabelsWithSpecialBlockNames
- ControlStructures::ProhibitMutatingListFunctions
- ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
- ControlStructures::ProhibitPostfixControls
- ControlStructures::ProhibitUnlessBlocks
- ControlStructures::ProhibitUnreachableCode
- ControlStructures::ProhibitUntilBlocks
- ControlStructures::ProhibitYadaOperator
- Documentation::PodSpelling
- Documentation::RequirePackageMatchesPodName
- Documentation::RequirePodAtEnd
- Documentation::RequirePodLinksIncludeText
- Documentation::RequirePodSections
- ErrorHandling::RequireCarping
- ErrorHandling::RequireCheckingReturnValueOfEval
- InputOutput::ProhibitBacktickOperators
- InputOutput::ProhibitBarewordFileHandles
- InputOutput::ProhibitExplicitStdin
- InputOutput::ProhibitInteractiveTest
- InputOutput::ProhibitJoinedReadline
- InputOutput::ProhibitOneArgSelect
- InputOutput::ProhibitReadlineInForLoop
- InputOutput::ProhibitTwoArgOpen
- InputOutput::RequireBracedFileHandleWithPrint
- InputOutput::RequireBriefOpen
- InputOutput::RequireCheckedClose
- InputOutput::RequireCheckedOpen
- InputOutput::RequireCheckedSyscalls
- InputOutput::RequireEncodingWithUTF8Layer
- Miscellanea::ProhibitFormats
- Miscellanea::ProhibitTies
- Miscellanea::ProhibitUnrestrictedNoCritic
- Miscellanea::ProhibitUselessNoCritic
- Modules::ProhibitAutomaticExportation
- Modules::ProhibitConditionalUseStatements
- Modules::ProhibitEvilModules
- Modules::ProhibitExcessMainComplexity
- Modules::ProhibitMultiplePackages
- Modules::RequireBarewordIncludes
- Modules::RequireEndWithOne
- Modules::RequireExplicitPackage
- Modules::RequireFilenameMatchesPackage
- Modules::RequireNoMatchVarsWithUseEnglish
- Modules::RequireVersionVar
- NamingConventions::Capitalization
- NamingConventions::ProhibitAmbiguousNames
- Objects::ProhibitIndirectSyntax
- References::ProhibitDoubleSigils
- RegularExpressions::ProhibitCaptureWithoutTest
- RegularExpressions::ProhibitComplexRegexes
- RegularExpressions::ProhibitEnumeratedClasses
- RegularExpressions::ProhibitEscapedMetacharacters
- RegularExpressions::ProhibitFixedStringMatches
- RegularExpressions::ProhibitSingleCharAlternation
- RegularExpressions::ProhibitUnusedCapture
- RegularExpressions::ProhibitUnusualDelimiters
- RegularExpressions::ProhibitUselessTopic
- RegularExpressions::RequireBracesForMultiline
- RegularExpressions::RequireDotMatchAnything
- RegularExpressions::RequireExtendedFormatting
- RegularExpressions::RequireLineBoundaryMatching
- Subroutines::ProhibitAmpersandSigils
- Subroutines::ProhibitBuiltinHomonyms
- Subroutines::ProhibitExcessComplexity
- Subroutines::ProhibitExplicitReturnUndef
- Subroutines::ProhibitManyArgs
- Subroutines::ProhibitNestedSubs
- Subroutines::ProhibitReturnSort
- Subroutines::ProhibitSubroutinePrototypes
- Subroutines::ProhibitUnusedPrivateSubroutines
- Subroutines::ProtectPrivateSubs
- Subroutines::RequireArgUnpacking
- Subroutines::RequireFinalReturn
- TestingAndDebugging::ProhibitNoStrict
- TestingAndDebugging::ProhibitNoWarnings
- TestingAndDebugging::ProhibitProlongedStrictureOverride
- TestingAndDebugging::RequireTestLabels
- TestingAndDebugging::RequireUseStrict
- TestingAndDebugging::RequireUseWarnings
- ValuesAndExpressions::ProhibitCommaSeparatedStatements
- ValuesAndExpressions::ProhibitComplexVersion
- ValuesAndExpressions::ProhibitConstantPragma
- ValuesAndExpressions::ProhibitEmptyQuotes
- ValuesAndExpressions::ProhibitEscapedCharacters
- ValuesAndExpressions::ProhibitImplicitNewlines
- ValuesAndExpressions::ProhibitInterpolationOfLiterals
- ValuesAndExpressions::ProhibitLeadingZeros
- ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
- ValuesAndExpressions::ProhibitMagicNumbers
- ValuesAndExpressions::ProhibitMismatchedOperators
- ValuesAndExpressions::ProhibitMixedBooleanOperators
- ValuesAndExpressions::ProhibitNoisyQuotes
- ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
- ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
- ValuesAndExpressions::ProhibitVersionStrings
- ValuesAndExpressions::RequireConstantVersion
- ValuesAndExpressions::RequireInterpolationOfMetachars
- ValuesAndExpressions::RequireNumberSeparators
- ValuesAndExpressions::RequireQuotedHeredocTerminator
- ValuesAndExpressions::RequireUpperCaseHeredocTerminator
- Variables::ProhibitAugmentedAssignmentInDeclaration
- Variables::ProhibitConditionalDeclarations
- Variables::ProhibitEvilVariables
- Variables::ProhibitLocalVars
- Variables::ProhibitMatchVars
- Variables::ProhibitPackageVars
- Variables::ProhibitPerl4PackageNames
- Variables::ProhibitPunctuationVars
- Variables::ProhibitReusedNames
- Variables::ProhibitUnusedVariables
- Variables::ProtectPrivateVars
- Variables::RequireInitializationForLocalVars
- Variables::RequireLexicalLoopIterators
- Variables::RequireLocalizedPunctuationVars
- Variables::RequireNegativeIndices
- VERSION
- AUTHOR
- COPYRIGHT
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
orProhibitSomething
. 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 (tryperlcritic --profile-proto
for a starting version). See the documentation of each module for its specific details.POLICIES
BuiltinFunctions::ProhibitBooleanGrep
Use
List::MoreUtils::any
instead ofgrep
in boolean context. [Default severity 2]BuiltinFunctions::ProhibitComplexMappings
Map blocks should have a single statement. [Default severity 3]
BuiltinFunctions::ProhibitLvalueSubstr
Use 4-argument
substr
instead of writingsubstr($foo, 2, 6) = $bar
. [Default severity 3]BuiltinFunctions::ProhibitReverseSortBlock
Forbid $b before $a in sort blocks. [Default severity 1]
BuiltinFunctions::ProhibitSleepViaSelect
Use Time::HiRes instead of something like
select(undef, undef, undef, .05)
. [Default severity 5]BuiltinFunctions::ProhibitStringyEval
Write
eval { my $foo; bar($foo) }
instead ofeval "my $foo; bar($foo);"
. [Default severity 5]BuiltinFunctions::ProhibitStringySplit
Write
split /-/, $string
instead ofsplit '-', $string
. [Default severity 2]BuiltinFunctions::ProhibitUniversalCan
Write
eval { $foo->can($name) }
instead ofUNIVERSAL::can($foo, $name)
. [Default severity 3]BuiltinFunctions::ProhibitUniversalIsa
Write
eval { $foo->isa($pkg) }
instead ofUNIVERSAL::isa($foo, $pkg)
. [Default severity 3]BuiltinFunctions::ProhibitUselessTopic
Don't pass $_ to built-in functions that assume it, or to most filetest operators. [Default severity 2]
BuiltinFunctions::ProhibitVoidGrep
Don't use
grep
in void contexts. [Default severity 3]BuiltinFunctions::ProhibitVoidMap
Don't use
map
in void contexts. [Default severity 3]BuiltinFunctions::RequireBlockGrep
Write
grep { /$pattern/ } @list
instead ofgrep /$pattern/, @list
. [Default severity 4]BuiltinFunctions::RequireBlockMap
Write
map { /$pattern/ } @list
instead ofmap /$pattern/, @list
. [Default severity 4]BuiltinFunctions::RequireGlobFunction
Use
glob q{*}
instead of <*>. [Default severity 5]BuiltinFunctions::RequireSimpleSortBlock
Sort blocks should have a single statement. [Default severity 3]
ClassHierarchies::ProhibitAutoloading
AUTOLOAD methods should be avoided. [Default severity 3]
ClassHierarchies::ProhibitExplicitISA
Employ
use base
instead of@ISA
. [Default severity 3]ClassHierarchies::ProhibitOneArgBless
Write
bless {}, $class;
instead of justbless {};
. [Default severity 5]CodeLayout::ProhibitHardTabs
Use spaces instead of tabs. [Default severity 3]
CodeLayout::ProhibitParensWithBuiltins
Write
open $handle, $path
instead ofopen($handle, $path)
. [Default severity 1]CodeLayout::ProhibitQuotedWordLists
Write
qw(foo bar baz)
instead of('foo', 'bar', 'baz')
. [Default severity 2]CodeLayout::ProhibitTrailingWhitespace
Don't use whitespace at the end of lines. [Default severity 1]
CodeLayout::RequireConsistentNewlines
Use the same newline through the source. [Default severity 4]
CodeLayout::RequireTidyCode
Must run code through perltidy. [Default severity 1]
CodeLayout::RequireTrailingCommas
Put a comma at the end of every multi-line list declaration, including the last one. [Default severity 1]
ControlStructures::ProhibitCStyleForLoops
Write
for(0..20)
instead offor($i=0; $i<=20; $i++)
. [Default severity 2]ControlStructures::ProhibitCascadingIfElse
Don't write long "if-elsif-elsif-elsif-elsif...else" chains. [Default severity 3]
ControlStructures::ProhibitDeepNests
Don't write deeply nested loops and conditionals. [Default severity 3]
ControlStructures::ProhibitLabelsWithSpecialBlockNames
Don't use labels that are the same as the special block names. [Default severity 4]
ControlStructures::ProhibitMutatingListFunctions
Don't modify
$_
in list functions. [Default severity 5]ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
Don't use operators like
not
,!~
, andle
withinuntil
andunless
. [Default severity 3]ControlStructures::ProhibitPostfixControls
Write
if($condition){ do_something() }
instead ofdo_something() if $condition
. [Default severity 2]ControlStructures::ProhibitUnlessBlocks
Write
if(! $condition)
instead ofunless($condition)
. [Default severity 2]ControlStructures::ProhibitUnreachableCode
Don't write code after an unconditional
die, exit, or next
. [Default severity 4]ControlStructures::ProhibitUntilBlocks
Write
while(! $condition)
instead ofuntil($condition)
. [Default severity 2]ControlStructures::ProhibitYadaOperator
Never use
...
in production code. [Default severity 4]Documentation::PodSpelling
Check your spelling. [Default severity 1]
Documentation::RequirePackageMatchesPodName
The
=head1 NAME
section should match the package. [Default severity 1]Documentation::RequirePodAtEnd
All POD should be after
__END__
. [Default severity 1]Documentation::RequirePodLinksIncludeText
Provide text to display with your pod links. [Default severity 2]
Documentation::RequirePodSections
Organize your POD into the customary sections. [Default severity 2]
ErrorHandling::RequireCarping
Use functions from Carp instead of
warn
ordie
. [Default severity 3]ErrorHandling::RequireCheckingReturnValueOfEval
You can't depend upon the value of
$@
/$EVAL_ERROR
to tell whether aneval
failed. [Default severity 3]InputOutput::ProhibitBacktickOperators
Discourage stuff like
@files = `ls $directory`
. [Default severity 3]InputOutput::ProhibitBarewordFileHandles
Write
open my $fh, q{<}, $filename;
instead ofopen FH, q{<}, $filename;
. [Default severity 5]InputOutput::ProhibitExplicitStdin
Use "<>" or "<ARGV>" or a prompting module instead of "<STDIN>". [Default severity 4]
InputOutput::ProhibitInteractiveTest
Use prompt() instead of -t. [Default severity 5]
InputOutput::ProhibitJoinedReadline
Use
local $/ = undef
or Path::Tiny instead of joined readline. [Default severity 3]InputOutput::ProhibitOneArgSelect
Never write
select($fh)
. [Default severity 4]InputOutput::ProhibitReadlineInForLoop
Write
while( $line = <> ){...}
instead offor(<>){...}
. [Default severity 4]InputOutput::ProhibitTwoArgOpen
Write
open $fh, q{<}, $filename;
instead ofopen $fh, "<$filename";
. [Default severity 5]InputOutput::RequireBracedFileHandleWithPrint
Write
print {$FH} $foo, $bar;
instead ofprint $FH $foo, $bar;
. [Default severity 1]InputOutput::RequireBriefOpen
Close filehandles as soon as possible after opening them. [Default severity 4]
InputOutput::RequireCheckedClose
Write
my $error = close $fh;
instead ofclose $fh;
. [Default severity 2]InputOutput::RequireCheckedOpen
Write
my $error = open $fh, $mode, $filename;
instead ofopen $fh, $mode, $filename;
. [Default severity 3]InputOutput::RequireCheckedSyscalls
Return value of flagged function ignored. [Default severity 1]
InputOutput::RequireEncodingWithUTF8Layer
Write
open $fh, q{<:encoding(UTF-8)}, $filename;
instead ofopen $fh, q{<:utf8}, $filename;
. [Default severity 5]Miscellanea::ProhibitFormats
Do not use
format
. [Default severity 3]Miscellanea::ProhibitTies
Do not use
tie
. [Default severity 2]Miscellanea::ProhibitUnrestrictedNoCritic
Forbid a bare
## no critic
[Default severity 3]Miscellanea::ProhibitUselessNoCritic
Remove ineffective "## no critic" annotations. [Default severity 2]
Modules::ProhibitAutomaticExportation
Export symbols via
@EXPORT_OK
or%EXPORT_TAGS
instead of@EXPORT
. [Default severity 4]Modules::ProhibitConditionalUseStatements
Avoid putting conditional logic around compile-time includes. [Default severity 3]
Modules::ProhibitEvilModules
Ban modules that aren't blessed by your shop. [Default severity 5]
Modules::ProhibitExcessMainComplexity
Minimize complexity in code that is outside of subroutines. [Default severity 3]
Modules::ProhibitMultiplePackages
Put packages (especially subclasses) in separate files. [Default severity 4]
Modules::RequireBarewordIncludes
Write
require Module
instead ofrequire 'Module.pm'
. [Default severity 5]Modules::RequireEndWithOne
End each module with an explicitly
1;
instead of some funky expression. [Default severity 4]Modules::RequireExplicitPackage
Always make the
package
explicit. [Default severity 4]Modules::RequireFilenameMatchesPackage
Package declaration must match filename. [Default severity 5]
Modules::RequireNoMatchVarsWithUseEnglish
use English
must be passed a-no_match_vars
argument. [Default severity 2]Modules::RequireVersionVar
Give every module a
$VERSION
number. [Default severity 2]NamingConventions::Capitalization
Distinguish different program components by case. [Default severity 1]
NamingConventions::ProhibitAmbiguousNames
Don't use vague variable or subroutine names like 'last' or 'record'. [Default severity 3]
Objects::ProhibitIndirectSyntax
Prohibit indirect object call syntax. [Default severity 4]
References::ProhibitDoubleSigils
Write
@{ $array_ref }
instead of@$array_ref
. [Default severity 2]RegularExpressions::ProhibitCaptureWithoutTest
Capture variable used outside conditional. [Default severity 3]
RegularExpressions::ProhibitComplexRegexes
Split long regexps into smaller
qr//
chunks. [Default severity 3]RegularExpressions::ProhibitEnumeratedClasses
Use named character classes instead of explicit character lists. [Default severity 1]
RegularExpressions::ProhibitEscapedMetacharacters
Use character classes for literal meta-characters instead of escapes. [Default severity 1]
RegularExpressions::ProhibitFixedStringMatches
Use
eq
or hash instead of fixed-pattern regexps. [Default severity 2]RegularExpressions::ProhibitSingleCharAlternation
Use
[abc]
instead ofa|b|c
. [Default severity 1]RegularExpressions::ProhibitUnusedCapture
Only use a capturing group if you plan to use the captured value. [Default severity 3]
RegularExpressions::ProhibitUnusualDelimiters
Use only
//
or{}
to delimit regexps. [Default severity 1]RegularExpressions::ProhibitUselessTopic
Don't use $_ to match against regexes. [Default severity 2]
RegularExpressions::RequireBracesForMultiline
Use
{
and}
to delimit multi-line regexps. [Default severity 1]RegularExpressions::RequireDotMatchAnything
Always use the
/s
modifier with regular expressions. [Default severity 2]RegularExpressions::RequireExtendedFormatting
Always use the
/x
modifier with regular expressions. [Default severity 3]RegularExpressions::RequireLineBoundaryMatching
Always use the
/m
modifier with regular expressions. [Default severity 2]Subroutines::ProhibitAmpersandSigils
Don't call functions with a leading ampersand sigil. [Default severity 2]
Subroutines::ProhibitBuiltinHomonyms
Don't declare your own
open
function. [Default severity 4]Subroutines::ProhibitExcessComplexity
Minimize complexity by factoring code into smaller subroutines. [Default severity 3]
Subroutines::ProhibitExplicitReturnUndef
Return failure with bare
return
instead ofreturn undef
. [Default severity 5]Subroutines::ProhibitManyArgs
Too many arguments. [Default severity 3]
Subroutines::ProhibitNestedSubs
sub never { sub correct {} }
. [Default severity 5]Subroutines::ProhibitReturnSort
Behavior of
sort
is not defined if called in scalar context. [Default severity 5]Subroutines::ProhibitSubroutinePrototypes
Don't write
sub my_function (@@) {}
. [Default severity 5]Subroutines::ProhibitUnusedPrivateSubroutines
Prevent unused private subroutines. [Default severity 3]
Subroutines::ProtectPrivateSubs
Prevent access to private subs in other packages. [Default severity 3]
Subroutines::RequireArgUnpacking
Always unpack
@_
first. [Default severity 4]Subroutines::RequireFinalReturn
End every path through a subroutine with an explicit
return
statement. [Default severity 4]TestingAndDebugging::ProhibitNoStrict
Prohibit various flavors of
no strict
. [Default severity 5]TestingAndDebugging::ProhibitNoWarnings
Prohibit various flavors of
no warnings
. [Default severity 4]TestingAndDebugging::ProhibitProlongedStrictureOverride
Don't turn off strict for large blocks of code. [Default severity 4]
TestingAndDebugging::RequireTestLabels
Tests should all have labels. [Default severity 3]
TestingAndDebugging::RequireUseStrict
Always
use strict
. [Default severity 5]TestingAndDebugging::RequireUseWarnings
Always
use warnings
. [Default severity 4]ValuesAndExpressions::ProhibitCommaSeparatedStatements
Don't use the comma operator as a statement separator. [Default severity 4]
ValuesAndExpressions::ProhibitComplexVersion
Prohibit version values from outside the module. [Default severity 3]
ValuesAndExpressions::ProhibitConstantPragma
Don't
use constant FOO => 15
. [Default severity 4]ValuesAndExpressions::ProhibitEmptyQuotes
Write
q{}
instead of''
. [Default severity 2]ValuesAndExpressions::ProhibitEscapedCharacters
Write
"\N{DELETE}"
instead of"\x7F"
, etc. [Default severity 2]ValuesAndExpressions::ProhibitImplicitNewlines
Use concatenation or HEREDOCs instead of literal line breaks in strings. [Default severity 3]
ValuesAndExpressions::ProhibitInterpolationOfLiterals
Always use single quotes for literal strings. [Default severity 1]
ValuesAndExpressions::ProhibitLeadingZeros
Write
oct(755)
instead of0755
. [Default severity 5]ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
Long chains of method calls indicate tightly coupled code. [Default severity 2]
ValuesAndExpressions::ProhibitMagicNumbers
Don't use values that don't explain themselves. [Default severity 2]
ValuesAndExpressions::ProhibitMismatchedOperators
Don't mix numeric operators with string operands, or vice-versa. [Default severity 3]
ValuesAndExpressions::ProhibitMixedBooleanOperators
Write
!$foo && $bar || $baz
instead ofnot $foo && $bar or $baz
. [Default severity 4]ValuesAndExpressions::ProhibitNoisyQuotes
Use
q{}
orqq{}
instead of quotes for awkward-looking strings. [Default severity 2]ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
Don't use quotes (
'
,"
,`
) as delimiters for the quote-like operators. [Default severity 3]ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
Don't write
print <<'__END__'
. [Default severity 3]ValuesAndExpressions::ProhibitVersionStrings
Don't use strings like
v1.4
or1.4.5
when including other modules. [Default severity 3]ValuesAndExpressions::RequireConstantVersion
Require $VERSION to be a constant rather than a computed value. [Default severity 2]
ValuesAndExpressions::RequireInterpolationOfMetachars
Warns that you might have used single quotes when you really wanted double-quotes. [Default severity 1]
ValuesAndExpressions::RequireNumberSeparators
Write
141_234_397.0145
instead of141234397.0145
. [Default severity 2]ValuesAndExpressions::RequireQuotedHeredocTerminator
Write
print <<'THE_END'
orprint <<"THE_END"
. [Default severity 3]ValuesAndExpressions::RequireUpperCaseHeredocTerminator
Write
<<'THE_END';
instead of<<'theEnd';
. [Default severity 2]Variables::ProhibitAugmentedAssignmentInDeclaration
Do not write
my $foo .= 'bar';
. [Default severity 4]Variables::ProhibitConditionalDeclarations
Do not write
my $foo = $bar if $baz;
. [Default severity 5]Variables::ProhibitEvilVariables
Ban variables that aren't blessed by your shop. [Default severity 5]
Variables::ProhibitLocalVars
Use
my
instead oflocal
, except when you have to. [Default severity 2]Variables::ProhibitMatchVars
Avoid
$`
,$&
,$'
and their English equivalents. [Default severity 4]Variables::ProhibitPackageVars
Eliminate globals declared with
our
oruse vars
. [Default severity 3]Variables::ProhibitPerl4PackageNames
Use double colon (::) to separate package name components instead of single quotes ('). [Default severity 2]
Variables::ProhibitPunctuationVars
Write
$EVAL_ERROR
instead of$@
. [Default severity 2]Variables::ProhibitReusedNames
Do not reuse a variable name in a lexical scope [Default severity 3]
Variables::ProhibitUnusedVariables
Don't ask for storage you don't need. [Default severity 3]
Variables::ProtectPrivateVars
Prevent access to private vars in other packages. [Default severity 3]
Variables::RequireInitializationForLocalVars
Write
local $foo = $bar;
instead of justlocal $foo;
. [Default severity 3]Variables::RequireLexicalLoopIterators
Write
for my $element (@list) {...}
instead offor $element (@list) {...}
. [Default severity 5]Variables::RequireLocalizedPunctuationVars
Magic variables should be assigned as "local". [Default severity 4]
Variables::RequireNegativeIndices
Negative array index should be used. [Default severity 4]
VERSION
This is part of Perl::Critic version 1.126.
AUTHOR
Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>
COPYRIGHT
Copyright (c) 2005-2011 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.
Module Install Instructions
To install Perl::Critic, copy and paste the appropriate command in to your terminal.
cpanm Perl::Critic
perl -MCPAN -e shell install Perl::Critic
For more information on module installation, please visit the detailed CPAN module installation guide.