Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Perl::Critic::Policy::ValuesAndExpressions::UndefinedBehaviourMaybeQuoteit / $1 not quoted (value not frozen) undefined behaviour

by Anonymous Monk
on Dec 20, 2012 at 04:47 UTC ( #1009689=CUFP: print w/ replies, xml ) Need Help??

package Perl::Critic::Policy::ValuesAndExpressions::UndefinedBehaviour +MaybeQuoteit; our $VERSION = '0.01'; use strict; use warnings; use Readonly; use parent 'Perl::Critic::Policy'; use Perl::Critic::Utils qw{ :severities }; sub supported_parameters { return () } sub default_severity { return $SEVERITY_MEDIUM } sub default_themes { return qw< bugs maintenance > } sub applies_to { return qw/PPI::Statement/ } Readonly::Scalar my $DESC => q{$1 not quoted (value not frozen) undefi +ned behaviour}; Readonly::Scalar my $EXPL => q{Maybe $1 should be quoted ( "$1" ) to p +revent undefined behaviour (to freeze the value)}; sub violates { my ( $self, $elem, undef ) = @_; return if ref($elem) !~ m{^(?:PPI::Statement::Variable|PPI::Statem +ent::Expression|PPI::Statement)$}; my $magic = $elem->find('PPI::Token::Magic'); my $operator = $elem->find('PPI::Token::Operator'); my $word = $elem->find('PPI::Token::Word'); if( $magic ){ my $dollar = 0; for my $mag ( @$magic ){ $dollar++ if $mag->content =~ m/^\$\d+$/; } if( $dollar and ( $word or $operator ) ){ return $self->violation( $DESC, $EXPL, $elem ); } } return; } 1; # End of Perl::Critic::Policy::ValuesAndExpressions::UndefinedBehav +iourMaybeQuoteit

Warns/Criticizes on  Foo( $1 ); or  $1 + Foo();

Why? See $1 not "freezing" in an addition

I tested it with perlcritic -3 foo.pl

Seems to work :)

Comment on Perl::Critic::Policy::ValuesAndExpressions::UndefinedBehaviourMaybeQuoteit / $1 not quoted (value not frozen) undefined behaviour
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://1009689]
Approved by davido
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (11)
As of 2015-07-30 07:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (270 votes), past polls