Login
Clean up some self-compliance issues now that MagicNumbers
authorElliot Shank <perl@galumph.com>
Sat, 8 Mar 2008 21:29:26 +0000 (21:29 +0000)
committerElliot Shank <perl@galumph.com>
Sat, 8 Mar 2008 21:29:26 +0000 (21:29 +0000)
is in core.

There's still issues with Utils::PPIRegexp and
ProhibitParensWithBuiltins: I can't come up with descriptive
names for these things.  Help!

examples/loadanalysisdb
lib/Perl/Critic/Policy/Subroutines/ProhibitManyArgs.pm
lib/Perl/Critic/Policy/ValuesAndExpressions/ProhibitMagicNumbers.pm
lib/Perl/Critic/Utils/PPIRegexp.pm
t/40_perlcriticrc

index 7ef479c..d3cb0ae 100755 (executable)
@@ -155,13 +155,16 @@ END_SQL
     # the driver what the parameter types are so that we can use execute()
     # without calling bind_param() each time. See "Binding Values Without
     # bind_param()" on pages 126-7 of "Programming the Perl DBI".
+
+    ## no critic (ProhibitMagicNumbers)
     $insert_statement->bind_param( 1, 'x', SQL_VARCHAR);
     $insert_statement->bind_param( 2,   1, SQL_INTEGER);
     $insert_statement->bind_param( 3,   1, SQL_INTEGER);
     $insert_statement->bind_param( 4,   1, SQL_INTEGER);
     $insert_statement->bind_param( 5, 'x', SQL_VARCHAR);
     $insert_statement->bind_param( 6, 'x', SQL_VARCHAR);
-    $insert_statement->bind_param( 6, 'x', SQL_VARCHAR);
+    $insert_statement->bind_param( 7, 'x', SQL_VARCHAR);
+    ## use critic
 
     return $insert_statement;
 }
index 6d31b29..35a27aa 100644 (file)
@@ -60,7 +60,7 @@ sub violates {
     my $num_args;
     if ($elem->prototype) {
        # subtract two for the "()" on the prototype
-       $num_args = -2 + length $elem->prototype;
+       $num_args = -2 + length $elem->prototype;  ## no critic (ProhibitMagicNumbers)
     } else {
        $num_args = _count_args($elem->block->schildren);
     }
index 60f5354..55086d4 100644 (file)
@@ -28,13 +28,16 @@ Readonly::Scalar my $TYPE_NOT_ALLOWED_SUFFIX =>
     ") are not allowed.$USE_READONLY_OR_CONSTANT";
 
 Readonly::Scalar my $UNSIGNED_NUMBER =>
-    qr<
+    qr{
             \d+ (?: [$PERIOD] \d+ )?  # 1, 1.5, etc.
         |   [$PERIOD] \d+             # .3, .7, etc.
-    >xms;
+    }xms;
 Readonly::Scalar my $SIGNED_NUMBER => qr/ [-+]? $UNSIGNED_NUMBER /xms;
+
+# The regex is already simplified.  There's just a lot of variable use.
+## no critic (ProhibitComplexRegexes)
 Readonly::Scalar my $RANGE =>
-    qr<
+    qr{
         \A
         ($SIGNED_NUMBER)
         [$PERIOD] [$PERIOD]
@@ -45,7 +48,8 @@ Readonly::Scalar my $RANGE =>
             [$RIGHT_PAREN]
         )?
         \z
-    >xms;
+    }xms;
+## use critic
 
 Readonly::Scalar my $SPECIAL_ARRAY_SUBSCRIPT_EXEMPTION => -1;
 
index 400c652..49b8c28 100644 (file)
@@ -9,10 +9,13 @@ package Perl::Critic::Utils::PPIRegexp;
 
 use strict;
 use warnings;
+
 use English qw(-no_match_vars);
-use PPI::Node;
+use Readonly;
 use Carp qw(croak);
 
+use PPI::Node;
+
 use base 'Exporter';
 
 our $VERSION = '1.082';
@@ -139,6 +142,8 @@ sub get_delimiters {
     }
 }
 
+Readonly::Scalar my $NO_DEPTH_USED  => -1;
+
 sub ppiify {
     my ($re) = @_;
     return if !$re;
@@ -148,7 +153,7 @@ sub ppiify {
     my $ppire = PPI::Node->new;
     my @stack = ($ppire);
     my $iter = $re->walker;
-    my $last_depth = -1;
+    my $last_depth = $NO_DEPTH_USED;
     while (my ($node, $depth) = $iter->()) {
         if ($last_depth > $depth) { # -> parent
             # walker() creates pseudo-closing nodes for reasons I don't understand
index 028a51e..89d09a7 100644 (file)
@@ -29,6 +29,3 @@ stop_words = accessor accessors autoflushes backticks bareword barewords BBEdit
 
 [InputOutput::RequireCheckedSyscalls]
 functions = open close
-
-[ValuesAndExpressions::ProhibitMagicNumbers]
-allowed_values = -1 0 1 2