Perl::Critic::PolicyFactory - Instantiate Policy objects


Perl::Critic::PolicyFactory - Instantiate Policy objects


This is a helper class that instantiates the Perl::Critic::Policy manpage objects with the user's preferred parameters. There are no user-serviceable parts here.


new( -profile => $profile, -errors => $config_errors )
Returns a reference to a new Perl::Critic::PolicyFactory object.

-profile is a reference to a the Perl::Critic::UserProfile manpage object. This argument is required.

-errors is a reference to an instance of the Perl::Critic::ConfigErrors manpage. This argument is optional. If specified, than any problems found will be added to the object.


create_policy( -name => $policy_name, -params => \%param_hash )
Creates one Policy object. If the object cannot be instantiated, it will throw a fatal exception. Otherwise, it returns a reference to the new Policy object.

-name is the name of a the Perl::Critic::Policy manpage subclass module. The 'Perl::Critic::Policy' portion of the name can be omitted for brevity. This argument is required.

-params is an optional reference to hash of parameters that will be passed into the constructor of the Policy. If -params is not defined, we will use the appropriate Policy parameters from the the Perl::Critic::UserProfile manpage.

Note that the Policy will not have had initialize_if_enabled in the Perl::Critic::Policy manpage invoked on it, so it may not yet be usable.

Constructs and returns one instance of each the Perl::Critic::Policy manpage subclass that is installed on the local system. Each Policy will be created with the appropriate parameters from the user's configuration profile.

Note that the Policies will not have had initialize_if_enabled in the Perl::Critic::Policy manpage invoked on them, so they may not yet be usable.


Perl::Critic::PolicyFactory has a few static subroutines that are used internally, but may be useful to you in some way.

Returns a list of all the Policy modules that are currently installed in the Perl::Critic:Policy namespace. These will include modules that are distributed with Perl::Critic plus any third-party modules that have been installed.


Jeffrey Ryan Thalhammer <>


Copyright (c) 2005-2007 Jeffrey Ryan Thalhammer. 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.

 Perl::Critic::PolicyFactory - Instantiate Policy objects