From: Vincent Pit Date: Wed, 22 Jul 2009 15:16:00 +0000 (+0200) Subject: Force the correct line number and file name when eval'ing the auditted code X-Git-Tag: v0.05~10 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FPerl-Critic-Policy-Dynamic-NoIndirect.git;a=commitdiff_plain;h=b9f3c06e4b9574e706c62e7645a9236b37b26953;hp=4b561e89d1b18f98e50315fed79705e4b4c26edd Force the correct line number and file name when eval'ing the auditted code --- diff --git a/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm b/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm index 3233efc..3769d30 100644 --- a/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm +++ b/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm @@ -43,19 +43,20 @@ my $tag_obj = sub { sub violates_dynamic { my ($self, undef, $doc) = @_; - my $src; - + my ($src, $file); if ($doc->isa('PPI::Document::File')) { - my $file = $doc->filename; + $file = $doc->filename; open my $fh, '<', $file or do { require Carp; Carp::confess("Can't open $file for reading: $!") }; $src = do { local $/; <$fh> }; } else { - $src = $doc->serialize; + $file = '(eval 0)'; + $src = $doc->serialize; } + $file =~ s/(? sub { push \@errs, [ \@_ ] }; { ; +#line 1 "$file" $src } } @@ -83,7 +85,6 @@ sub violates_dynamic { my %errs_tags; for (@errs) { my ($obj, $meth, $line) = @$_[0, 1, 3]; - $line -= $offset; my $tag = join "\0", $line, $meth, $tag_obj->($obj); push @{$errs_tags{$tag}}, [ $obj, $meth ]; }