Login
Enhancements:
authorAndy Lester <andy@petdance.com>
Mon, 17 Apr 2006 01:58:59 +0000 (01:58 +0000)
committerAndy Lester <andy@petdance.com>
Mon, 17 Apr 2006 01:58:59 +0000 (01:58 +0000)
* perlcritic's directory searching now skips backup files, such
as *.swp, *.bak and *~.  It also ignores version control system
directories, and the blib directory in module build directories.

Changes
bin/perlcritic

diff --git a/Changes b/Changes
index 8e8e6c3..969af42 100644 (file)
--- a/Changes
+++ b/Changes
@@ -5,6 +5,12 @@
 # $Revision$
 ########################################################################
 
+[NEXT]
+     Enhancements:
+     * perlcritic's directory searching now skips backup files, such
+       as *.swp, *.bak and *~.  It also ignores version control system
+       directories, and the blib directory in module build directories.
+
 [0.15_01] Released on 20060414
 
      Enhancements:
index a00f56b..e5078f9 100755 (executable)
@@ -1,4 +1,3 @@
-
 #!/usr/bin/perl
 
 #######################################################################
@@ -218,6 +217,7 @@ sub all_code_files {
     # to files that seem to be Perl source code.  This subroutine was
     # poached from Test::Perl::Critic.
 
+    my %skip_dir = map { ($_,1) } qw( CVS RCS .svn _darcs _blib );
     my @queue      = @_;
     my @code_files = ();
 
@@ -229,19 +229,31 @@ sub all_code_files {
             closedir $dh;
 
             @newfiles = File::Spec->no_upwards(@newfiles);
-            @newfiles = grep { $_ ne 'CVS' && $_ ne '.svn' }    @newfiles;
+            @newfiles = grep { !$skip_dir{$_} } @newfiles;
             push @queue, map { File::Spec->catfile($file, $_) } @newfiles;
         }
 
-        if ( -f $file && _is_perl($file) ) {
+        if ( (-f $file) && !_is_backup($file) && _is_perl($file) ) {
             push @code_files, $file;
         }
     }
     return @code_files;
 }
 
+
 #-----------------------------------------------------------------------------
 
+# Decide if it's some sort of backup file
+sub _is_backup {
+    local $_ = shift;
+
+    return 1 if /\.swp$/;
+    return 1 if /\.bak$/;
+    return 1 if /~$/;
+
+    return;
+}
+
 sub _is_perl {
 
     # Returns true if the argument ends with a perl-ish file