]> git.vpit.fr Git - perl/modules/Perl-Critic-Policy-Dynamic-NoIndirect.git/commitdiff
Document and test using indirect inside the auditted code
authorVincent Pit <vince@profvince.com>
Tue, 14 Jul 2009 19:37:42 +0000 (21:37 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 14 Jul 2009 19:37:42 +0000 (21:37 +0200)
lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm
t/10-basic.t

index cb88e6bae8fd68bd26e97a566374bbbd34778a71..556ecc6013c209778fce30672b363fd3b85682a0 100644 (file)
@@ -115,6 +115,12 @@ sub violates_dynamic {
  } @violations;
 }
 
+=head1 CAVEATS
+
+The uses of the L<indirect> pragma inside the auditted code take precedence over this policy.
+Hence no violations will be reported for indirect method calls that are located inside the lexical scope of C<use indirect> or C<< no indirect hook => ... >>.
+Occurrences of C<no indirect> won't be a problem.
+
 =head1 DEPENDENCIES
 
 L<perl> 5.8, L<Carp>.
index 55215c40110bc19d09d86893aa21b60d45224aea..0c1c23d3e11fddf598038f6a35aed87ef8128be8 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 
 my ($tests, $reports, $subtests);
 BEGIN {
- $tests    = 25;
+ $tests    = 27;
  $reports  = 42;
  $subtests = 3;
 }
@@ -71,6 +71,9 @@ my $x = new X;
 ----
 [ 'new', 'X', 1, 9 ]
 ####
+use indirect; my $x = new X;
+----
+####
 my $x = new X; $x = new X;
 ----
 [ 'new', 'X', 1, 9 ], [ 'new', 'X', 1, 21 ]
@@ -104,6 +107,10 @@ my $x = new new;
 [ 'new', 'new', 1, 9 ]
 ####
 our $obj;
+use indirect; my $x = new $obj;
+----
+####
+our $obj;
 my $x = new $obj;
 ----
 [ 'new', '$obj', 2, 9 ]