##############################################################################
# This file is an example of a Perl::Critic configuration file.  This
# file is usually called ".perlcriticrc" and is usually located in
# your home directory or the working directory of your project.
# However, you can use the -profile option to tell Perl::Critic use a
# different file in another location.
#
# The area before any of the [Perl::Critic::Policy] sections is used
# to set default values for the arguments to the Perl::Critic engine.
# If you are using the "perlcritic" program, you can override these
# settings at the command-line.  Or if you are using the Perl::Critic
# library, your API arguments will override these settings as well.


#-----------------------------------------------------------------------------
# exclude:  Directs Perl::Critic to never apply Policies with names that
# match one of the patterns.  To specify multiple patterns, separate them
# with whitespace.  Do not put quotes around anything.

exclude = Documentation Naming

#-----------------------------------------------------------------------------
# include: Directs Perl::Critic to always apply Policies with names that
# match one of the patterns.  To specify multiple patterns, separate them
# with whitespace.  Do not put quotes around anything.

include   = CodeLayout Modules

#-----------------------------------------------------------------------------
# force: Directs Perl::Critic to ignore the special "##no critic"
# comments embedded in the source code.  The default is 0.  If
# defined, this should be either 1 or 0.

force = 1

#-----------------------------------------------------------------------------
# only: Directs Perl::Critic to only choose from Policies that are
# explicitly mentioned in this file.  Otherwise, Perl::Critic chooses
# from all the Perl::Critic::Policy classes that are found on the
# local machine.  The default is 0.  If defined, this should be either
# 1 or 0.

only = 1

#-----------------------------------------------------------------------------
# severity: Sets the default minimum severity level for Policies.  The
# default is 5.  If defined, this should be an integer from 1 to 5,
# where 5 is the highest severity.

severity = 3

#-----------------------------------------------------------------------------
# theme:  Sets the default theme.  Only Policies that fit into this
# them shall be applied.  If defined, this should be a valid theme
# expression.  See the Perl::Critic POD for more details about this.

theme = danger + risky - pbp

#-----------------------------------------------------------------------------
# top:  Directs Perl::Critic to only report the top N Policy violations,
# as ranked by their individual severity.  If defined, this should be
# a positive integer.

top = 50

#-----------------------------------------------------------------------------
# verbose: Sets the format for printing Policy violations.  If
# defined, this should be either a format spcecification, or a numeric
# verbosity level.  See the Perl::Critic POD for more details.

verbose = 5

##############################################################################
# The rest of the file consists of several named blocks that contain
# configuration parameters for each of the Policies.  The names of
# each blocks correspond to the names of the Policy modules.  For
# brevity, the "Perl::Critic::Policy" portion of the name can be
# omitted.  See the POD for the appropriate Policy for a complete
# description of the configuration parameters that it supports.


#-----------------------------------------------------------------------------
# If you vehmently disagree with a particular Policy, putting a "-" in
# front of the Policy name will effectively disables that Policy.  It
# will never be applied unless you use the "-include" option to apply
# it explicitly.

[-NamingConventions::ProhibitMixedCaseVars]
[-NamingConventions::ProhibitMixedCaseSubs]
[-TestingAndDebugging::RequireUseWarnings]

#-----------------------------------------------------------------------------
# If you agree with a Policy, but feel that it's severity level is not
# appropriate, then you can change the severity for any Policy.  If
# defined this should be an integer from 1 to 5, where 5 is the
# highest severity.

[BuiltinFunctions::RequireBlockGrep]
severity = 2

[CodeLayout::ProhibitHardTabs]
severity = 1

[ClassHierarchies::ProhibitAutoloading]
severity = 5

#-----------------------------------------------------------------------------
# Policies are also organized into themes.  Themes are just names for
# arbitrary groups of Policies.  You can define new themes and add
# them to any Policy.  If defined, this should be a string of
# whitespace-delimited words.

[RegularExpressions::RequireExtendedFormatting]
add_themes = client_foo
severity   = 3

[RegularExpressions::RequireExtendedFormatting]
add_themes = client_foo client_bar
severity   = 3

#-----------------------------------------------------------------------------
# Some Policies also have specialized configuration parameters.  In
# all cases, these are repsented as simple name=value pairs.  See the
# POD for the appropriate Policy for a complete discussion of its
# configuration parameters.

[ControlStructures::ProhibitPostfixControls]
allow    = for if
severity = 4

[Documentation::RequirePodSections]
lib_sections = NAME | SYNOPSIS | METHODS | AUTHOR
add_themes = my_favorites
severity   = 4

#-----------------------------------------------------------------------------
# If you set the "only" flag, then Perl::Critic only chooses from
# Policies that are mentioned in your configuration file.  This is
# helpful when you want to use only a very small subset of the
# Policies.  So just create blocks for any other Policies that you
# want to use.

[ValuesAndExpressions::ProhibitInterpolationOfLiterals]
[ValuesAndExpressions::ProhibitLeadingZeros]
[InputOutput::ProhibitBarewordFileHandles]
[Miscellanea::ProhibitTies]


