Login
Moving the ProhibitExit policy off trunk, so we can make a release.
authorJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sat, 28 Feb 2009 07:09:45 +0000 (07:09 +0000)
committerJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sat, 28 Feb 2009 07:09:45 +0000 (07:09 +0000)
Will fix this at a later date.

Changes
lib/Perl/Critic/Policy/BuiltinFunctions/ProhibitExitInSubroutines.pm [deleted file]
lib/Perl/Critic/Policy/Modules/ProhibitExit.pm [deleted file]
t/BuiltinFunctions/ProhibitExitInSubroutines.run [deleted file]
t/Modules/ProhibitExit.run [deleted file]

diff --git a/Changes b/Changes
index a0f03d0..b04d898 100644 (file)
--- a/Changes
+++ b/Changes
@@ -18,9 +18,6 @@
       default was that they were fatal.
     * -p is now a synonym for --profile.
 
-    New Policies:
-    * BuiltinFunctions::ProhibitExitInSubroutines
-
     Policy Changes:
     * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
       didn't include "pbp" in its default themes even though it is derived
diff --git a/lib/Perl/Critic/Policy/BuiltinFunctions/ProhibitExitInSubroutines.pm b/lib/Perl/Critic/Policy/BuiltinFunctions/ProhibitExitInSubroutines.pm
deleted file mode 100644 (file)
index 3d7392e..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-##############################################################################
-#      $URL$
-#     $Date$
-#   $Author$
-# $Revision$
-##############################################################################
-
-package Perl::Critic::Policy::BuiltinFunctions::ProhibitExitInSubroutines;
-
-use 5.006001;
-use strict;
-use warnings;
-use Readonly;
-
-use Perl::Critic::Utils qw{ :severities :classification };
-use base 'Perl::Critic::Policy';
-
-#-----------------------------------------------------------------------------
-
-our $VERSION = '1.096';
-
-#-----------------------------------------------------------------------------
-
-Readonly::Scalar my $DESC   => q{"exit" called from within a subroutine};
-Readonly::Scalar my $EXPL   => q{Use "die" or "croak" instead};
-
-#-----------------------------------------------------------------------------
-
-sub supported_parameters { return ()                   }
-sub default_severity     { return $SEVERITY_MEDIUM     }
-sub default_themes       { return qw(core maintenance) }
-sub applies_to           { return 'PPI::Token::Word'   }
-
-#-----------------------------------------------------------------------------
-
-sub violates {
-    my ( $self, $elem, $doc ) = @_;
-    return if $elem ne 'exit';
-    return if not is_function_call($elem);
-
-    my $statement = $elem->statement();
-    return if not $statement;
-
-    my $parent = $statement->parent();
-    return if not $parent;
-
-    return if $parent->isa('PPI::Document');
-
-    return $self->violation($DESC, $EXPL, $elem);
-}
-
-#-----------------------------------------------------------------------------
-1;
-
-__END__
-
-#-----------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-Perl::Critic::Policy::BuiltinFunctions::ProhibitExitInSubroutines - Don't use exit() to throw exceptions from subroutines.
-
-
-=head1 AFFILIATION
-
-This Policy is part of the core L<Perl::Critic|Perl::Critic>
-distribution.
-
-
-=head1 DESCRIPTION
-
-A common newbie mistake is to use the C<exit> function when they encounter some
-kind error condition in their subroutines.  But there is no way to trap an C<exit> call
-to possibly recover from the error, which makes it difficult for others to use your
-subroutine.  Instead, you should be using C<die> or C<croak>, which can be trapped.  Or
-better yet, you can use a real exception mechanism, such as L<Exception::Class>.
-
-So this Policy emits a violation any time that C<exit> is called from within a subroutine.
-
-To be fair, there are certain occasions where calling C<exit> from a subroutine is
-perfectly reasonable (C<Pod::Usage::pod2usage> is a very good example).  In those cases,
-you should clearly document the behavior and add a C<"## no critic"> annotation
-for this Policy.
-
-
-=head1 SEE ALSO
-
-L<Perl::Critic::Policy::ErrorHandling::RequireCarping|Perl::Critic::Policy::ErrorHandling::RequireCarping>
-
-
-=head1 CONFIGURATION
-
-This Policy is not configurable except for the standard options.
-
-
-=head1 AUTHOR
-
-Jeffrey Ryan Thalhammer <thaljef@cpan.org>
-
-
-=head1 COPYRIGHT
-
-Copyright (c) 2005-2009 Jeffrey Ryan Thalhammer.  All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.  The full text of this license
-can be found in the LICENSE file included with this module.
-
-=cut
-
-#############################################################################
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 78
-#   indent-tabs-mode: nil
-#   c-indentation-style: bsd
-# End:
-# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :
diff --git a/lib/Perl/Critic/Policy/Modules/ProhibitExit.pm b/lib/Perl/Critic/Policy/Modules/ProhibitExit.pm
deleted file mode 100644 (file)
index e0703ac..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-##############################################################################
-#      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/distributions/Perl-Critic/lib/Perl/Critic/Policy/Modules/ProhibitMultiplePackages.pm $
-#     $Date: 2009-01-18 15:32:26 -0800 (Sun, 18 Jan 2009) $
-#   $Author: clonezone $
-# $Revision: 3007 $
-##############################################################################
-
-package Perl::Critic::Policy::Modules::ProhibitExit;
-
-use 5.006001;
-use strict;
-use warnings;
-use Readonly;
-
-use Perl::Critic::Utils qw{ :severities :classification };
-use base 'Perl::Critic::Policy';
-
-#-----------------------------------------------------------------------------
-
-our $VERSION = '1.096';
-
-#-----------------------------------------------------------------------------
-
-Readonly::Scalar my $DESC   => q{"exit" called from within a module};
-Readonly::Scalar my $EXPL   => q{Use "die" or "croak" instead};
-
-#-----------------------------------------------------------------------------
-
-sub supported_parameters { return ()                 }
-sub default_severity     { return $SEVERITY_MEDIUM   }
-sub default_themes       { return qw( core)          }
-sub applies_to           { return 'PPI::Token::Word' }
-
-#-----------------------------------------------------------------------------
-
-sub prepare_to_scan_document {
-    my ($self, $doc) = @_;
-    return 0 if is_script($doc);
-    return 1;
-}
-
-#-----------------------------------------------------------------------------
-
-sub violates {
-    my ( $self, $elem, $doc ) = @_;
-    return if $elem ne 'exit';
-    return if not is_function_call($elem);
-    return $self->violation($DESC, $EXPL, $elem);
-}
-
-#-----------------------------------------------------------------------------
-1;
-
-__END__
-
-#-----------------------------------------------------------------------------
-
-=pod
-
-=head1 NAME
-
-Perl::Critic::Policy::Modules::ProhibitExit - Don't use exit() to throw exceptions from modules.
-
-
-=head1 AFFILIATION
-
-This Policy is part of the core L<Perl::Critic|Perl::Critic>
-distribution.
-
-
-=head1 DESCRIPTION
-
-A common newbie mistake is to use the C<exit> function when they encounter some
-kind error condition in their library.  But there is no way to trap an C<exit> call
-to possibly recover from the error, which makes it difficult for others to use your
-library.  Instead, you should be using C<die> or C<croak>, which can be trapped.  Or
-better yet, you can use a real exception mechanism, such as L<Exception::Class>.
-
-Usually, the only sensible place to call C<exit> is from inside a script.    So this
-Policy emits a violation any time that C<exit> is called from within a file that
-is not a script (i.e. does not have a shebang line).
-
-To be fair, there are certain occasions where calling C<exit> from a library is
-perfectly reasonable (L<Pod::Usage> is a very good example).  In those cases,
-you should clearly document the behavior and add a C<"## no critic"> annotation
-for this Policy.
-
-
-=head1 SEE ALSO
-
-L<Perl::Critic::Policy::Subroutines::ProhibitExit|Perl::Critic::Policy::Subroutines::ProhibitExit>
-
-L<Perl::Critic::Policy::ErrorHandling::RequireCarping|Perl::Critic::Policy::ErrorHandling::RequireCarping>
-
-
-=head1 CONFIGURATION
-
-This Policy is not configurable except for the standard options.
-
-
-=head1 AUTHOR
-
-Jeffrey Ryan Thalhammer <thaljef@cpan.org>
-
-
-=head1 COPYRIGHT
-
-Copyright (c) 2005-2009 Jeffrey Ryan Thalhammer.  All rights reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.  The full text of this license
-can be found in the LICENSE file included with this module.
-
-=cut
-
-#############################################################################
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 78
-#   indent-tabs-mode: nil
-#   c-indentation-style: bsd
-# End:
-# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :
diff --git a/t/BuiltinFunctions/ProhibitExitInSubroutines.run b/t/BuiltinFunctions/ProhibitExitInSubroutines.run
deleted file mode 100644 (file)
index 7e3998e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-##############################################################################
-#      $URL$
-#     $Date$
-#   $Author$
-# $Revision$
-##############################################################################
-
-## name basic pass, outside of subroutine
-## failures 0
-## cut
-
-
-exit;
-exit if $condition;
-$codition || exit();
-
-#-----------------------------------------------------------------------------
-
-## name basic failure, inside subroutine
-## failures 3
-## cut
-
-sub foo {
-    exit;
-    exit if $condition;
-    $codition || exit();
-}
-
-#-----------------------------------------------------------------------------
-
-## name not really exit() calls
-## failures 0
-## cut
-
-sub Foo {
-    $object->exit();
-    $hash{exit};
-}
-
-#-----------------------------------------------------------------------------
-
-##############################################################################
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 78
-#   indent-tabs-mode: nil
-#   c-indentation-style: bsd
-# End:
-# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :
diff --git a/t/Modules/ProhibitExit.run b/t/Modules/ProhibitExit.run
deleted file mode 100644 (file)
index 1c7791f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-##############################################################################
-#      $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/distributions/Perl-Critic/lib/Perl/Critic/TestUtils.pm $
-#     $Date: 2009-01-18 15:32:26 -0800 (Sun, 18 Jan 2009) $
-#   $Author: clonezone $
-# $Revision: 3007 $
-##############################################################################
-
-## name basic pass, inside script
-## failures 0
-## cut
-#!/bin/perl
-
-exit;
-exit if $condition;
-$codition || exit();
-sub foo { exit; }
-
-#-----------------------------------------------------------------------------
-
-## name basic failure, inside module
-## failures 4
-## cut
-
-package Foo;
-
-exit;
-exit if $condition;
-$codition || exit();
-sub foo { exit; }
-
-#-----------------------------------------------------------------------------
-
-## name not really exit() calls
-## failures 0
-## cut
-
-package Foo;
-
-$object->exit();
-$hash{exit};
-
-#-----------------------------------------------------------------------------
-
-##############################################################################
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 78
-#   indent-tabs-mode: nil
-#   c-indentation-style: bsd
-# End:
-# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :