annotate find-todo.pl @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents fc9323a41f5a
children
rev   line source
lbajardsilogic@0 1 #!/usr/bin/perl -w
lbajardsilogic@0 2 require 5;
lbajardsilogic@0 3 use strict;
lbajardsilogic@0 4
lbajardsilogic@0 5 # Command line should contain a list of files to look in.
lbajardsilogic@0 6 #
lbajardsilogic@0 7 # A likely invocation would be
lbajardsilogic@0 8 # find . \( -name \*.h -o -name \*.cpp \) -print | xargs perl ./find-todo.pl
lbajardsilogic@0 9 #
lbajardsilogic@0 10 # Unusual or binary files will be ignored.
lbajardsilogic@0 11
lbajardsilogic@0 12 my $todo_count = 0;
lbajardsilogic@0 13 my $file_count = 0;
lbajardsilogic@0 14 my $unfinished_count = 0;
lbajardsilogic@0 15
lbajardsilogic@0 16 sub print_file_maybe
lbajardsilogic@0 17 {
lbajardsilogic@0 18 my ($pf, $file) = @_;
lbajardsilogic@0 19 if (! $$pf) {
lbajardsilogic@0 20 print "\n$file:\n";
lbajardsilogic@0 21 $$pf = 1;
lbajardsilogic@0 22 $file_count++;
lbajardsilogic@0 23 }
lbajardsilogic@0 24 }
lbajardsilogic@0 25
lbajardsilogic@0 26 foreach (@ARGV) {
lbajardsilogic@0 27
lbajardsilogic@0 28 my $file = $_;
lbajardsilogic@0 29 next if ($file =~ /~$/);
lbajardsilogic@0 30 open FILE, $file or next;
lbajardsilogic@0 31 my $in_todo = 0;
lbajardsilogic@0 32 my $printed_file = 0;
lbajardsilogic@0 33 my $line = 0;
lbajardsilogic@0 34
lbajardsilogic@0 35 while (<FILE>) {
lbajardsilogic@0 36
lbajardsilogic@0 37 $line++;
lbajardsilogic@0 38 last if (m.^[\200-\377].); # probably a binary file
lbajardsilogic@0 39
lbajardsilogic@0 40 if ($in_todo) {
lbajardsilogic@0 41
lbajardsilogic@0 42 if (m, /[/\*](!!!)?\s* (.*) $ ,x) {
lbajardsilogic@0 43 print " $2\n";
lbajardsilogic@0 44 } else {
lbajardsilogic@0 45 $in_todo = 0;
lbajardsilogic@0 46 }
lbajardsilogic@0 47
lbajardsilogic@0 48 } else {
lbajardsilogic@0 49
lbajardsilogic@0 50 if (m, /[/\*] !!!\s* (.*) $ ,x) {
lbajardsilogic@0 51 print_file_maybe(\$printed_file, $file);
lbajardsilogic@0 52 print sprintf("%8d", $line), ": $1\n";
lbajardsilogic@0 53 $in_todo = 1;
lbajardsilogic@0 54 $todo_count++;
lbajardsilogic@0 55
lbajardsilogic@0 56 } elsif (m, /[/\*] \Q...\E \s* (.*) $ ,x) {
lbajardsilogic@0 57 print_file_maybe(\$printed_file, $file);
lbajardsilogic@0 58 print sprintf("%8d", $line), ": [U] $1\n";
lbajardsilogic@0 59 $unfinished_count++;
lbajardsilogic@0 60 }
lbajardsilogic@0 61 }
lbajardsilogic@0 62 }
lbajardsilogic@0 63
lbajardsilogic@0 64 close FILE;
lbajardsilogic@0 65 }
lbajardsilogic@0 66
lbajardsilogic@0 67 print "\nTotal: $todo_count problem items, $unfinished_count unfinished " .
lbajardsilogic@0 68 "markers in $file_count files\n\n";
lbajardsilogic@0 69