severity = 3
verbose = 11
theme = core + pbp + bugs + maintenance + cosmetic + complexity + security + tests + moose
program-extensions = pl psgi t
[-Modules::ProhibitAutomaticExportation]
[-Modules::RequireExplicitInclusion]
[-Subroutines::ProhibitCallsToUndeclaredSubs]
[-Subroutines::ProhibitUnusedPrivateSubroutines]
[Subroutines::ProhibitExcessComplexity]
max_mccabe = 25
[CognitiveComplexity::ProhibitExcessCognitiveComplexity]
info_level = 15
warn_level = 25
[TestingAndDebugging::RequireUseStrict]
equivalent_modules = Modern::Perl
[TestingAndDebugging::RequireUseWarnings]
equivalent_modules = Modern::Perl
[BuiltinFunctions::ProhibitStringySplit]
severity = 3
[CodeLayout::RequireTrailingCommas]
severity = 3
[ControlStructures::ProhibitCStyleForLoops]
severity = 3
[InputOutput::RequireCheckedSyscalls]
functions = :builtins
exclude_functions = sleep print close
severity = 3
[RegularExpressions::ProhibitComplexRegexes]
max_characters = 200
[RegularExpressions::ProhibitUnusualDelimiters]
severity = 3
[-Subroutines::ProhibitUnusedPrivateSubroutines]
[-Subroutines::ProtectPrivateSubs]
[-InputOutput::ProhibitBacktickOperators]
[-Bangs::ProhibitDebuggingModules]
[-BuiltinFunctions::RequireBlockMap]
[TestingAndDebugging::ProhibitNoStrict]
allow = refs
[TestingAndDebugging::ProhibitNoWarnings]
allow = redefine
[ValuesAndExpressions::ProhibitEmptyQuotes]
severity = 3
[ValuesAndExpressions::ProhibitInterpolationOfLiterals]
severity = 3
[ValuesAndExpressions::RequireUpperCaseHeredocTerminator]
severity = 3
[Variables::ProhibitPackageVars]
add_packages = Carp Test::Builder
[-Subroutines::RequireFinalReturn]
# This incorrectly thinks signatures are prototypes.
[-Subroutines::ProhibitSubroutinePrototypes]
[ErrorHandling::RequireCarping]
# No need for /xsm everywhere
[-RegularExpressions::RequireDotMatchAnything]
[-RegularExpressions::RequireExtendedFormatting]
[-RegularExpressions::RequireLineBoundaryMatching]
# http://stackoverflow.com/questions/2275317/why-does-perlcritic-dislike-using-shift-to-populate-subroutine-variables
[-Subroutines::RequireArgUnpacking]
[ValuesAndExpressions::ProhibitVersionStrings]
# Explicitly returning undef is a _good_ thing in many cases, since it
# prevents very common errors when using a sub in list context to construct a
# hash and ending up with a missing value or key.
[-Subroutines::ProhibitExplicitReturnUndef]
[ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions]