Kaynağa Gözat

r9021@Kushana: nickm | 2006-09-29 16:58:41 -0400
Add a perl script and a make target to find and check for duplicate log messages at level notice or higher.


svn:r8539

Nick Mathewson 17 yıl önce
ebeveyn
işleme
174c3dc6b7
2 değiştirilmiş dosya ile 48 ekleme ve 0 silme
  1. 3 0
      Makefile.am
  2. 45 0
      contrib/checkLogs.pl

+ 3 - 0
Makefile.am

@@ -63,3 +63,6 @@ check-spaces:
 		src/common/[^as]*.c                   \
 		src/or/[^et]*.[ch] src/or/t*.c src/or/eventdns_tor.h
 
+check-logs:
+	./contrib/checkLogs.pl                        \
+		src/*/*.[ch] | sort -n

+ 45 - 0
contrib/checkLogs.pl

@@ -0,0 +1,45 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+my %count = ();
+my $more = 0;
+my $last = "";
+
+while (<>) {
+    if ($more) {
+        if (/\s*(?:LD_[A-Z]*,)?\"((?:[^\"\\]+|\\.*)+)\"(.*)/) {
+            $last .= $1;
+            if ($2 !~ /[,\)]/) {
+                $more = 1;
+            } else {
+                $count{$last}++;
+                $more = 0;
+            }
+        } elsif (/[,\)]/) {
+            $count{$last}++;
+            $more = 0;
+        } elsif ($more == 2) {
+            print "SKIPPED more\n";
+        }
+    } elsif (/log_(?:warn|err|notice)\([^\"]*\"((?:[^\"\\]+|\\.)*)\"(.*)/) {
+        my $s = $1;
+        if ($2 =~ /[,\)]/ ) {
+            $count{$s}++;
+        } else {
+            $more = 1;
+            $last = $s;
+        }
+    } elsif (/log_(?:warn|err|notice)\((?:LD_[A-Z]*,)?(.*)/) {
+        my $extra = $1;
+        chomp $extra;
+        $last = "";
+        $more = 2 if ($extra eq '');
+    }
+}
+
+while ((my $phrase, my $count) = each %count) {
+    if ($count > 1) {
+        print "$count\t$phrase\n";
+    }
+}