Perl::Critic::Policy::Bangs::ProhibitFlagComments - Don't use XXX, TODO, or FIXME.


Perl-Critic-Bangs documentation Contained in the Perl-Critic-Bangs distribution.

Index


Code Index:

NAME

Top

Perl::Critic::Policy::Bangs::ProhibitFlagComments - Don't use XXX, TODO, or FIXME.

AFFILIATION

Top

This Policy is part of the Perl::Critic::Bangs distribution.

DESCRIPTION

Top

Programmers often leave comments intended to "flag" themselves to problems later. This policy looks for comments containing 'XXX', 'TODO', or 'FIXME'.

CONFIGURATION

Top

By default, this policy only looks for 'XXX', 'TODO', or 'FIXME' in comments. You can override this by specifying a value for keywords in your .perlcriticrc file like this:

  [Bangs::ProhibitFlagComments]
  keywords = XXX TODO FIXME BUG REVIEW

AUTHOR

Top

Andrew Moore <amoore@mooresystems.com>

ACKNOWLEDGMENTS

Top

Adapted from policies by Jeffrey Ryan Thalhammer <thaljef@cpan.org>, Based on App::Fluff by Andy Lester, "<andy at petdance.com>"

COPYRIGHT

Top


Perl-Critic-Bangs documentation Contained in the Perl-Critic-Bangs distribution.

package Perl::Critic::Policy::Bangs::ProhibitFlagComments;

use strict;
use warnings;
use Perl::Critic::Utils;
use base 'Perl::Critic::Policy';

our $VERSION = '1.08';

#----------------------------------------------------------------------------

sub supported_parameters {
    return (
        {
            name           => 'keywords',
            description    => 'Words to prohibit in comments.',
            behavior       => 'string list',
            default_string => 'XXX FIXME TODO',
        },
    );
}

sub default_severity     { return $SEVERITY_LOW                             }
sub default_themes       { return qw( bangs maintenance )                   }
sub applies_to           { return qw( PPI::Token::Comment PPI::Token::Pod ) }


#---------------------------------------------------------------------------

sub violates {
    my ( $self, $elem, $doc ) = @_;

    foreach my $keyword ( keys %{ $self->{'_keywords'} } ) {
        if ( index( $elem->content(), $keyword ) != -1 ) { ## no critic (ProhibitMagicNumbers)
            my $desc = qq(Flag comment '$keyword' found);
            my $expl = qq(Comments containing "$keyword" typically indicate bugs or problems that the developer knows exist);
            return $self->violation( $desc, $expl, $elem );
        }
    }
    return;
}

1;

__END__

#---------------------------------------------------------------------------