[or-cvs] Enhancements to whitespace borkage detector

Nick Mathewson nickm at seul.org
Mon Nov 22 23:29:02 UTC 2004


Update of /home/or/cvsroot/tor/contrib
In directory moria.mit.edu:/tmp/cvs-serv29366/contrib

Modified Files:
	checkSpace.pl 
Log Message:
Enhancements to whitespace borkage detector

Index: checkSpace.pl
===================================================================
RCS file: /home/or/cvsroot/tor/contrib/checkSpace.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- checkSpace.pl	10 Nov 2004 01:20:17 -0000	1.2
+++ checkSpace.pl	22 Nov 2004 23:28:54 -0000	1.3
@@ -3,16 +3,25 @@
 for $fn (@ARGV) {
     open(F, "$fn");
     $lastnil = 0;
+    $incomment = 0;
     while (<F>) {
+	## Warn about windows-style newlines.
         if (/\r/) {
             print "       CR:$fn:$.\n";
         }
+	## Warn about tabs.
         if (/\t/) {
             print "      TAB:$fn:$.\n";
         }
+	## Warn about trailing whitespace.
         if (/ +$/) {
             print "Space\@EOL:$fn:$.\n";
         }
+	## Warn about control keywords without following space.
+	#if (/\s(?:if|while|for|switch)\(/) {
+	#    print "      KW(:$fn:$.\n";
+	#}
+	## Warn about multiple empty lines.
         if ($lastnil && /^$/) {
             print " DoubleNL:$fn:$.\n";
         } elsif (/^$/) {
@@ -20,6 +29,51 @@
         } else {
             $lastnil = 0;
         }
+	### Juju to skip over comments and strings, since the tests
+	### we're about to do are okay there.
+	if ($incomment) {
+	    if (m!\*/!) {
+		s!.*?\*/!!;
+		$incomment = 0;
+	    } else {
+		next;
+	    }
+	}
+	if (m!/\*.*?\*/!) {
+	    s!/\*.*?\*/!!;
+	} elsif (m!/\*!) {
+	    s!/\*!!;
+	    $incomment = 1;
+	    next;
+	}
+	s!"(?:[^\"]+|\\.)*"!!g;
+	next if /^\#/;
+	## Warn about C++-style comments.
+	if (m!//!) {
+	#    print "       //:$fn:$.\n";
+	    s!//.*!!;
+	}
+        ## Warn about braces preceded by non-space.
+	if (/([^\s])\{/) {
+	    print "       $1\{:$fn:$.\n";
+	}
+	## Warn about function calls with space before parens.
+	if (/(\w+)\s\(/) {
+	    if ($1 ne "if" and $1 ne "while" and $1 ne "for" and 
+		$1 ne "switch" and $1 ne "return" and $1 ne "int" and 
+                $1 ne "void" and $1 ne "__attribute__") {
+		print "     fn ():$fn:$.\n";
+	    }
+	}
+	## Warn about multiple internal spaces.
+	#if (/\S\s{2,}[^\s\\]/) {
+	#    print "     X  X:$fn:$.\n";
+	#}
+	## Warn about { with stuff after.
+	#s/\s+$//;
+	#if (/\{[^\}\\]+$/) {
+	#    print "     {X:$fn:$.\n";
+	#}
     }
     close(F);
 }



More information about the tor-commits mailing list