The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# 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

[Modules::ProhibitAutomaticExportation]
severity = 3





######################################################################
# Policies that Padre disagrees with or tolerates as worth the risk

[-BuiltinFunctions::ProhibitStringyEval]
[-ClassHierarchies::ProhibitExplicitISA]
[-CodeLayout::ProhibitHardTabs]
[-ControlStructures::ProhibitMutatingListFunctions]
[-ControlStructures::ProhibitUnlessBlocks]
[-InputOutput::RequireBriefOpen]
[-Subroutines::ProhibitExplicitReturnUndef]
[-TestingAndDebugging::ProhibitNoStrict]
[-TestingAndDebugging::ProhibitNoWarnings]
[-TestingAndDebugging::ProhibitProlongedStrictureOverride]
[-ValuesAndExpressions::ProhibitConstantPragma]
[-ValuesAndExpressions::ProhibitMixedBooleanOperators]
[-Variables::ProhibitPunctuationVars]