--- a/tools/summarise_gcc_errors.pl Fri Mar 26 16:26:39 2010 +0000
+++ b/tools/summarise_gcc_errors.pl Wed Mar 31 11:44:26 2010 +0100
@@ -49,7 +49,8 @@
{
Usage("Invalid argument");
}
-
+
+my $current_package = "";
my %files;
my %errors_by_file;
my %error_count_by_file;
@@ -60,10 +61,22 @@
my %unique_message_counts;
my %all_message_counts;
my $next_message_id = 1;
+my %packages_by_file;
+my %package_count_by_file;
+
my $line;
while ($line = <>)
{
+ # </pre>os/usb, usb_CompilerCompatibility.005, SF_builds/usb/builds/CompilerCompatibility/usb_CompilerCompatibility.005/html/os_usb_failures.html
+
+ if ($line =~/\/html\/([^\/]+)_failures.html/)
+ {
+ $current_package = $1;
+ $current_package =~ s/_/\//;
+ next;
+ }
+
# M:/epoc32/include/elements/nm_interfaces.h:255: warning: dereferencing type-punned pointer will break strict-aliasing rules
# M:/epoc32/include/f32file.h:2169: warning: invalid access to non-static data member 'TVolFormatParam::iUId' of NULL object
# M:/epoc32/include/f32file.h:2169: warning: (perhaps the 'offsetof' macro was used incorrectly)
@@ -112,45 +125,59 @@
$all_message_counts{$message_id} += 1;
}
my $instance = sprintf("%s:%d: %s-#%d", $filename, $lineno, $messagetype, $message_id);
+
+ my $packages = $packages_by_file{$filename};
+ if (!defined $packages)
+ {
+ $packages_by_file{$filename} = "\t$current_package\t";
+ $package_count_by_file{$filename} = 1;
+ }
+ else
+ {
+ if (index($packages,"\t$current_package\t") < 0)
+ {
+ $packages_by_file{$filename} .= "\t$current_package\t";
+ $package_count_by_file{$filename} += 1;
+ }
+ }
if (defined $files{$instance})
{
# already seen this one
next;
}
+
+ if (!defined $unique_message_counts{$message_id})
+ {
+ $unique_message_counts{$message_id} = 1;
+ }
else
{
- if (!defined $unique_message_counts{$message_id})
- {
- $unique_message_counts{$message_id} = 1;
- }
- else
- {
- $unique_message_counts{$message_id} += 1;
- }
- $files{$instance} = $message;
+ $unique_message_counts{$message_id} += 1;
+ }
+ $files{$instance} = $message;
- if (!defined $files_by_message_id{$message_id})
- {
- $files_by_message_id{$message_id} = $filename;
- }
- else
- {
- $files_by_message_id{$message_id} .= "\n$filename";
- }
-
- my $error = sprintf "%-5d: %s: %s", $lineno, $messagetype, $message;
- if (!defined $errors_by_file{$filename})
- {
- $errors_by_file{$filename} = $error;
- $error_count_by_file{$filename} = 1;
- }
- else
- {
- $errors_by_file{$filename} .= "\n$error";
- $error_count_by_file{$filename} += 1;
- }
- }
+ if (!defined $files_by_message_id{$message_id})
+ {
+ $files_by_message_id{$message_id} = $filename;
+ }
+ else
+ {
+ $files_by_message_id{$message_id} .= "\n$filename";
+ }
+
+ my $error = sprintf "%-5d: %s: %s", $lineno, $messagetype, $message;
+ if (!defined $errors_by_file{$filename})
+ {
+ $errors_by_file{$filename} = $error;
+ $error_count_by_file{$filename} = 1;
+ }
+ else
+ {
+ $errors_by_file{$filename} .= "\n$error";
+ $error_count_by_file{$filename} += 1;
+ }
+
next;
}
}
@@ -186,6 +213,17 @@
}
}
+print "\n\n====Packages impacted (if > 1)\n";
+foreach my $file ( sort {$package_count_by_file{$b} <=> $package_count_by_file{$a}} keys %package_count_by_file)
+ {
+ if ($package_count_by_file{$file} < 2)
+ {
+ next;
+ }
+ my ($empty,@packages) = split /\t+/, $packages_by_file{$file};
+ printf "%-6d\t%s\n\t(%s)\n",$package_count_by_file{$file}, $file, join(", ", @packages);
+ }
+
print "\n\n====Affected files by package\n";
my $current_package = "";
my @currentfiles;