Login
Add subroutine name to violation descriptions for
authorElliot Shank <perl@galumph.com>
Thu, 16 Oct 2008 00:51:46 +0000 (00:51 +0000)
committerElliot Shank <perl@galumph.com>
Thu, 16 Oct 2008 00:51:46 +0000 (00:51 +0000)
Subroutines::ProhibitExcessComplexity.  Optimistically, it handles the
case of anonymous subroutines, in case PPI ever handles them.  :]

RT #40070, thanks to Andreas Koenig.

Changes
lib/Perl/Critic/Policy/Subroutines/ProhibitExcessComplexity.pm

diff --git a/Changes b/Changes
index d829bbe..c8e58fa 100644 (file)
--- a/Changes
+++ b/Changes
       reversed in order to make it indicative of being more generally useful.
 
     Policy Changes:
-    * Modules::ProhibitEvilModules now allows you to specify what the
-      description of a use of a bad module should be, to, say, suggest that
-      people use autodie instead of Fatal.
     * InputOutput::RequireCheckedClose, InputOutput::RequireCheckedOpen, and
       InputOutput::RequireCheckedSyscalls now all support autodie.
       Unfortunately, autodie is currently treated like a module and not a
       pragma, which means that the lexical scoping is not taken into account.
+    * Modules::ProhibitEvilModules now allows you to specify what the
+      description of a use of a bad module should be, to, say, suggest that
+      people use autodie instead of Fatal.
+    * Subroutine::ProhibitExcessComplexity violation descriptions now include
+      the name of the subroutine, thanks to Andreas Koenig, RT #40070.
 
     New Policies:
     * Miscellanea::ProhibitUnrestrictedNoCritic
index 2951208..5b9187f 100644 (file)
@@ -51,7 +51,14 @@ sub violates {
     # Is it too complex?
     return if $score <= $self->{_max_mccabe};
 
-    my $desc = qq{Subroutine with high complexity score ($score)};
+    my $desc;
+    if ( my $name = $elem->name() ) {
+        $desc = qq<Subroutine "$name" with high complexity score ($score)>;
+    }
+    else {
+        $desc = qq<Anonymous subroutine with high complexity score ($score)>;
+    }
+
     return $self->violation( $desc, $EXPL, $elem );
 }