Login
perlcritic now dies if no policies are selected.
authorJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 24 Jun 2007 05:57:04 +0000 (05:57 +0000)
committerJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 24 Jun 2007 05:57:04 +0000 (05:57 +0000)
This prevents you from wasting time with a whacked
configuration.

Also mentioned Test::Perl::Critic::Progressive
in the docs.

bin/perlcritic
lib/Perl/Critic.pm

index 3b0a65d..7a42efd 100755 (executable)
@@ -189,6 +189,8 @@ sub critique {
 
     require Perl::Critic;
     $CRITIC = Perl::Critic->new( %{$opts_ref} );
+    $CRITIC->policies() || die "No policies selected.\n";
+
     my $number_of_violations = undef;
 
     for my $file (@files) {
@@ -219,14 +221,13 @@ sub critique {
 sub render_report {
 
     my ( $file, $opts_ref, @violations ) = @_;
-    my $count = scalar @violations;
-
 
     # Only report the number of violations, if asked.
+    my $number_of_violations = scalar @violations;
     if( $opts_ref->{-count} ){
         ref $file || print "$file: ";
-        print "$count\n";
-        return $count;
+        print "$number_of_violations\n";
+        return $number_of_violations;
     }
 
     # Hail all-clear unless we should shut up.
@@ -247,7 +248,7 @@ sub render_report {
     my $color = $CRITIC->config->color();
     print $color ? _colorize_by_severity(@violations) : @violations;
 
-    return $count;
+    return $number_of_violations;
 }
 
 #-----------------------------------------------------------------------------
@@ -490,9 +491,10 @@ enforcing PBP, and it will even support rules that contradict Conway.
 All rules can easily be configured or disabled to your liking.
 
 If you want to integrate C<perlcritic> with your build process, the
-L<Test::Perl::Critic> module provides a nice interface that is
-suitable for test scripts.  For ultimate convenience (at the expense
-of some flexibility) see the L<criticism> pragma.
+L<Test::Perl::Critic> module provides a nice interface that is suitable for
+test scripts.  Also, L<Test::Perl::Critic::Progressive> is useful for
+gradually applying coding standards to legacy code.  For ultimate convenience
+(at the expense of some flexibility) see the L<criticism> pragma.
 
 Win32 and ActivePerl users can find PPM distributions of Perl::Critic
 at L<http://theoryx5.uwinnipeg.ca/ppms/>.
@@ -1315,6 +1317,11 @@ L<Perl::Critic::Lax>
 L<Perl::Critic::StricterSubs>
 L<Perl::Critic::Swift>
 
+These distributions enable you to use Perl::Critic in your unit tests:
+
+L<Test::Perl::Critic>
+L<Test::Perl::Critic::Progressive>
+
 There are also a couple of distributions that will install all the
 Perl::Critic related modules known to the development team:
 
index 8093865..527d98f 100644 (file)
@@ -388,8 +388,9 @@ create new Policy modules that suit your own tastes.
 For a command-line interface to Perl::Critic, see the documentation for
 L<perlcritic>.  If you want to integrate Perl::Critic with your build process,
 L<Test::Perl::Critic> provides an interface that is suitable for test scripts.
-For the ultimate convenience (at the expense of some flexibility) see the
-L<criticism> pragma.
+Also, L<Test::Perl::Critic::Progressive> is useful for gradually applying
+coding standards to legacy code.  For the ultimate convenience (at the expense
+of some flexibility) see the L<criticism> pragma.
 
 Win32 and ActivePerl users can find PPM distributions of Perl::Critic at
 L<http://theoryx5.uwinnipeg.ca/ppms/>.
@@ -1040,6 +1041,11 @@ L<Perl::Critic::Lax>
 L<Perl::Critic::StricterSubs>
 L<Perl::Critic::Swift>
 
+These distributions enable you to use Perl::Critic in your unit tests:
+
+L<Test::Perl::Critic>
+L<Test::Perl::Critic::Progressive>
+
 There are also a couple of distributions that will install all the
 Perl::Critic related modules known to the development team: