Login
Resolved failing test cases for Miscellanea::ProhibitUnrestrictedNoCritic. Next...
authorJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 26 Oct 2008 06:36:18 +0000 (06:36 +0000)
committerJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 26 Oct 2008 06:36:18 +0000 (06:36 +0000)
bin/perlcritic
lib/Perl/Critic/Policy/Miscellanea/ProhibitUnrestrictedNoCritic.pm
t/Miscellanea/ProhibitUnrestrictedNoCritic.run

index 9cb0f0e..195a022 100755 (executable)
@@ -490,7 +490,7 @@ sub _this_is_windows {
 #-----------------------------------------------------------------------------
 
 sub _at_tty {
-    return -t STDOUT; ## no critic 'ProhibitInteractiveTest';
+    return -t STDOUT; ## no critic (ProhibitInteractiveTest);
 }
 
 #-----------------------------------------------------------------------------
@@ -550,7 +550,7 @@ sub policy_docs {
     my @matching_policies  = grep { $_ =~ m/$pattern/ixms } @site_policies;
 
     # "-T" means don't send to pager   
-    my @perldoc_output = map {`perldoc -T $_`} @matching_policies;  ## no critic ProhibitBacktick
+    my @perldoc_output = map {`perldoc -T $_`} @matching_policies;  ## no critic (ProhibitBacktick)
     out @perldoc_output;
 
     exit 0;
index 3ba6b6d..0e4dd84 100644 (file)
@@ -34,9 +34,10 @@ sub can_be_disabled      { return $FALSE                     }
 
 sub violates {
     my ( $self, $elem, undef ) = @_;
-    return if $elem !~ m{\A \#\# \s+ no \s+ critic \b}smx;
+    $elem =~ m{\A \#\# \s* no \s+ critic \s* (.*) \z}smx
+        or return;
     
-    if ($elem !~ m{\A \#\# \s+ no \s+ critic \s* (?: qw)? \( .+ \)}smx ) {
+    if ($1 !~ m{\A (?: qw)? \s* [("'] \s* \w+ }smx ) {
         return $self->violation( $DESC, $EXPL, $elem );
     }   
     
@@ -56,33 +57,36 @@ __END__
 
 Perl::Critic::Policy::Miscellanea::ProhibitUnrestrictedNoCritic - Forbid a bare C<## no critic>
 
-
 =head1 AFFILIATION
 
 This Policy is part of the core L<Perl::Critic|Perl::Critic>
 distribution.
 
-
 =head1 DESCRIPTION
 
 A bare C<## no critic> marker will disable B<all> the active Policies.
 This creates holes for other, unintended violations to appear in your code.  It is
 better to disable B<only> the particular Policies that you need to get around.
-By putting Policy names in parenthsis after the C<## no critic> marker, then
-it will only disable the named Policies.  Policy names are matched as regular
-expressions, so you can use shortened Policy names, or patterns that match
-several Policies. This Policy generates a violation any time that an 
-unrestricted C<## no critic> marker appears.
-
-  ## no critic                    # not ok
-  ## no critic ()                 # not ok
-  ## no critic (SomePolicyNames)  # ok
+By putting Policy names in a comma-separated list after the C<## no critic> marker, 
+then it will only disable the named Policies.  Policy names are matched as regular 
+expressions, so you can use shortened Policy names, or patterns that match several 
+Policies. This Policy generates a violation any time that an unrestricted 
+C<## no critic> marker appears.
+
+  ## no critic                     # not ok
+  ## no critic ''                  # not ok
+  ## no critic ()                  # not ok
+  ## no critic qw()                # not ok
+  
+  ## no critic    Policy1, Policy2   # ok
+  ## no critic   'Policy1, Policy2'  # ok
+  ## no critic   (Policy1, Policy2)  # ok
+  ## no critic qw(Policy1, Policy2)  # ok (the preferred style)
 
 =head1 CONFIGURATION
 
 This Policy is not configurable except for the standard options.
 
-
 =head1 AUTHOR
 
 Jeffrey Ryan Thalhammer <thaljef@cpan.org>
index 9f3814c..59aa0e2 100644 (file)
@@ -1,18 +1,36 @@
 ##----------------------------------------------------------------------------
 ## name standard failures
-## failures 12
+## failures 4
 ## cut
 
+##no critic
 ## no critic
 ## no critic;
 ## no critic #blah,blah
 
-$foo = $bar; ## no critic
+##----------------------------------------------------------------------------
+## name slightly more complicated failures
+## failures 6
+## cut
+
+# just some spacing variations here...
+$foo = $bar; ##  no critic
+$foo = $bar; ##no critic
+
 $foo = $bar; ## no critic ()
 $foo = $bar; ## no critic ''
 $foo = $bar; ## no critic ""
 $foo = $bar; ## no critic qw()
 
+#----------------------------------------------------------------------------
+## name unrestricted "no critic" on a sub block
+## failures 5
+## cut
+
+sub frobulate { ##no critic
+    return $frob;
+}
+    
 sub frobulate { ## no critic #blah,blah
     return $frob;
 }