# This is the Perl::Critic policy file for Padre.
#
# The general rule here is to only add one rule at a time to this file,
# and generally only in situations where we will not generate many false
# positives (requiring spammy # no critic entries) and where we will not
# generate cargo cult behaviour in contributors.
#
# For example, using the ProhibitExcessComplexity policy would be a BAD idea
# for Padre, because many of the classes that represent Wx widgets and
# dialogs need to have large (and sometimes complex) constructors.
# Prohibiting complexity results in "Bulldozing" behaviour, where arbitrary
# chunks of constructors get removed and put in _setup_whatever methods.
# The constructor is now just as complex as it always was, except that now
# the code is scatterred all over the file and it is even harder to maintain
# than it was in one big method.
severity = 4
# Disable Perl::Critic::More if you are unfortunate enough to have installed it
theme = not more
######################################################################
# Disabling critic sucks, configure a better policy
[Miscellanea::ProhibitUnrestrictedNoCritic]
severity = 3
[Miscellanea::ProhibitUselessNoCritic]
severity = 5
######################################################################
# Temporarily downgraded as the noise obscures more important tests
[Subroutines::RequireFinalReturn]
severity = 3
[Subroutines::RequireArgUnpacking]
severity = 3
[Subroutines::ProhibitBuiltinHomonyms]
severity = 3
######################################################################
# Policies that Padre disagrees with or tolerates as worth the risk
[-BuiltinFunctions::ProhibitStringyEval]
[-ClassHierarchies::ProhibitExplicitISA]
[-CodeLayout::ProhibitHardTabs]
[-ControlStructures::ProhibitMutatingListFunctions]
[-ControlStructures::ProhibitUnlessBlocks]
[-Subroutines::ProhibitExplicitReturnUndef]
[-TestingAndDebugging::ProhibitNoStrict]
[-TestingAndDebugging::ProhibitNoWarnings]
[-ValuesAndExpressions::ProhibitConstantPragma]
[-ValuesAndExpressions::ProhibitMixedBooleanOperators]
[-Variables::ProhibitPunctuationVars]
######################################################################
# Policies that we allow, but only in non-installed (testing) code
# Everything ABOVE this section should be the same between both
# of the critic config files.
[-Variables::RequireLocalizedPunctuationVars]
[-Modules::ProhibitAutomaticExportation]
[-Modules::ProhibitMultiplePackages]