package Perl::Critic::Policy::DynamicMoose::ProhibitPublicBuilders;
use Moose;
-extends 'Perl::Critic::Policy::DynamicMoose';
+extends 'Perl::Critic::DynamicMoosePolicy';
use Perl::Critic::Utils ':severities';
use Perl::Critic::Utils::Moose 'meta_type';
my @violations;
- my $attributes = $meta->get_attribute_map;
- for my $name (keys %$attributes) {
- my $attribute = $attributes->{$name};
+ for my $name ($meta->get_attribute_list) {
+ my $attribute = $meta->get_attribute($name);
my $builder;
if (blessed($attribute)) {
that your attribute builder methods' names are prefixed with an underscore
to mark them private.
+=head1 WARNING
+
+B<VERY IMPORTANT:> Most L<Perl::Critic> Policies (including all the ones that
+ship with Perl::Critic> use pure static analysis -- they never compile nor
+execute any of the code that they analyze. However, this policy is very
+different. It actually attempts to compile your code and then compares the
+subroutines mentioned in your code to those found in the symbol table.
+Therefore you should B<not> use this Policy on any code that you do not trust,
+or may have undesirable side-effects at compile-time (such as connecting to the
+network or mutating files).
+
+For this Policy to work, all the modules included in your code must be
+installed locally, and must compile without error.
+
+=head1 AUTHOR
+
+Shawn M Moore, C<sartak@bestpractical.com>
+
=cut