Login
Vanquised can_be_disabled() method.
authorJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 26 Oct 2008 06:52:49 +0000 (06:52 +0000)
committerJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 26 Oct 2008 06:52:49 +0000 (06:52 +0000)
lib/Perl/Critic.pm
lib/Perl/Critic/Policy.pm
t/99_pod_coverage.t

index c01fd99..0406ad2 100644 (file)
@@ -28,7 +28,7 @@ use Perl::Critic::Config;
 use Perl::Critic::Violation;
 use Perl::Critic::Document;
 use Perl::Critic::Statistics;
-use Perl::Critic::Utils qw{ :characters };
+use Perl::Critic::Utils qw{ :characters hashify };
 
 #-----------------------------------------------------------------------------
 
@@ -192,6 +192,7 @@ sub _critique {
     return if not $policy->prepare_to_scan_document($doc);
 
     my $maximum_violations = $policy->get_maximum_violations_per_document();
+    my %policies_that_cannot_be_disabled = hashify(_policies_that_cannot_be_disabled());
 
     if (defined $maximum_violations && $maximum_violations == 0) {
         return;
@@ -216,9 +217,9 @@ sub _critique {
                 my $line = $violation->location()->[0];
                 if (exists $is_line_disabled->{$line}) {
                     next VIOLATION if $is_line_disabled->{$line}->{$policy_name}
-                        && $policy->can_be_disabled();
+                        && not exists $policies_that_cannot_be_disabled{$policy_name}; 
                     next VIOLATION if $is_line_disabled->{$line}->{ALL}
-                        && $policy->can_be_disabled();
+                        && not exists $policies_that_cannot_be_disabled{$policy_name};
                 }
 
                 push @violations, $violation;
@@ -397,10 +398,21 @@ sub _unfix_shebang {
 
 #-----------------------------------------------------------------------------
 
-1;
+sub _policies_that_cannot_be_disabled {
+    # This is a special list of policies that cannot
+    # be disabled by the "no critic" pseudo-pragma.
+    
+    return qw(
+        Perl::Critic::Policy::Miscellanea::ProhibitUnrestrictedNoCritic
+    );
+}
 
 #-----------------------------------------------------------------------------
 
+1;
+
+
+
 __END__
 
 =pod
index 6960e5e..f3d488b 100644 (file)
@@ -128,12 +128,6 @@ sub prepare_to_scan_document {
 
 #-----------------------------------------------------------------------------
 
-sub can_be_disabled {
-    return $TRUE;
-}
-
-#-----------------------------------------------------------------------------
-
 sub _validate_config_keys {
     my ( $self, $errors, $config ) = @_;
 
@@ -737,14 +731,6 @@ overwritten.  Duplicate themes will be removed.
 Appends additional themes to this Policy.  Any existing themes are
 preserved.  Duplicate themes will be removed.
 
-=item C< can_be_disabled() >
-
-Returns a true value if this Policy can be disabled by a C<"## no critic">
-marker.  The default method returns true.  Most Policies should never need
-to override this.  But If you want to write a policy that cannot be disabled, 
-override this method to return false.  Note that this only affects the 
-C<"## no critic"> markers -- the Policy can still be disabled via the 
-F<.perlcriticrc> file.
 
 =item C< get_abstract() >
 
index 70cbddb..29acd02 100644 (file)
@@ -57,7 +57,6 @@ sub get_trusted_methods {
     return qw(
         new
         initialize_if_enabled
-        can_be_disabled
         prepare_to_scan_document
         violates
         applies_to