tools/summarise_rvct_errors.pl
author William Roberts <williamr@symbian.org>
Mon, 26 Jul 2010 11:39:25 +0100
changeset 11 3dcb71781467
parent 6 2618a0f10e3e
permissions -rw-r--r--
Various tweaks to the summarising tools
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     1
#! perl
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     2
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     3
# Copyright (c) 2010 Symbian Foundation Ltd
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     4
# This component and the accompanying materials are made available
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     6
# which accompanies this distribution, and is available
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     8
#
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
     9
# Initial Contributors:
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    11
# 
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    12
# Contributors:
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    13
#
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    14
# Description:
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    15
# Perl script to summarise GCC logs
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    16
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    17
use strict;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    18
use Getopt::Long;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    19
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    20
sub Usage($)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    21
  {
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    22
  my ($msg) = @_;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    23
  
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    24
  print "$msg\n\n" if ($msg ne "");
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    25
  
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    26
	print <<'EOF';
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    27
summarise_gcc_errors.pl - simple script for analysing gcc error logs
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    28
	
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    29
This script will read a collection of GCC output logs and summarise
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    30
the error messages in various useful ways.
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    31
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    32
Options:
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    33
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    34
-warnings      process warnings as well as errors
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    35
-verbose       list the files associated with each error
11
3dcb71781467 Various tweaks to the summarising tools
William Roberts <williamr@symbian.org>
parents: 6
diff changeset
    36
-ignore EXP    ignore input lines which match EXP
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    37
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    38
EOF
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    39
  exit (1);  
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    40
  }
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    41
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    42
my $warnings = 0;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    43
my $verbose = 0;
11
3dcb71781467 Various tweaks to the summarising tools
William Roberts <williamr@symbian.org>
parents: 6
diff changeset
    44
my $ignore_exp = "";
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    45
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    46
# Analyse the rest of command-line parameters
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    47
if (!GetOptions(
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    48
    "w|warnings" => \$warnings,
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    49
    "v|verbose" => \$verbose,
11
3dcb71781467 Various tweaks to the summarising tools
William Roberts <williamr@symbian.org>
parents: 6
diff changeset
    50
    "ignore=s" => \$ignore_exp,
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    51
    ))
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    52
  {
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    53
  Usage("Invalid argument");
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    54
  }
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    55
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    56
my $current_package = ""; 
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    57
my %files;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    58
my %errors_by_file;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    59
my %error_count_by_file;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    60
my %errors;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    61
my %message_ids;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    62
my %files_by_message_id;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    63
my %messages_by_id;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    64
my %unique_message_counts;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    65
my %all_message_counts;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    66
my $next_message_id = 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    67
my %packages_by_file;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    68
my %package_count_by_file;
6
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    69
my %missing_files;
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    70
4
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
    71
my $linktarget = "";
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
    72
my %visibility_problems;
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    73
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    74
my $line;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    75
while ($line = <>)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    76
	{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    77
	# </pre>os/usb, usb_CompilerCompatibility.005, SF_builds/usb/builds/CompilerCompatibility/usb_CompilerCompatibility.005/html/os_usb_failures.html
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    78
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    79
	if ($line =~/\/html\/([^\/]+)_failures.html/)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    80
		{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    81
		$current_package = $1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    82
		$current_package =~ s/_/\//;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    83
		next;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    84
		}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
    85
11
3dcb71781467 Various tweaks to the summarising tools
William Roberts <williamr@symbian.org>
parents: 6
diff changeset
    86
	next if ($ignore_exp ne "" && $line =~ /$ignore_exp/io);
3dcb71781467 Various tweaks to the summarising tools
William Roberts <williamr@symbian.org>
parents: 6
diff changeset
    87
	
6
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    88
	# Error: #5: cannot open source input file "lbs/epos_cposprivacynotifier.h":
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    89
	
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    90
	if ($line =~ /cannot open source input file (\"|&quot;)(.*)(\"|&quot)/)
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    91
		{
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    92
		my $missing_file = $2;
11
3dcb71781467 Various tweaks to the summarising tools
William Roberts <williamr@symbian.org>
parents: 6
diff changeset
    93
		$missing_file =~ s/\\/\//g;	# Unix file separators please
6
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    94
		my $count = $missing_files{$missing_file};
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    95
		$count = 0 if (!defined $count);
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    96
		$missing_files{$missing_file} = $count + 1;
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    97
		
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    98
		# and fall through to the rest of the processing...
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
    99
		}
4
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   100
	# ... &#39;--soname=glxgridviewplugin{000a0000}[20000a03].dll&x39; ...
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   101
	
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   102
	if ($line =~ /--soname=(\S+)(.000a0000.)?(\S+)[&']/)
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   103
		{
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   104
		$linktarget = $1.$3;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   105
		next;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   106
		}
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   107
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   108
	# Error: L6410W: Symbol CGlxGridViewPluginBase::AddCommandHandlersL() with non STV_DEFAULT visibility STV_HIDDEN should be resolved statically, cannot use definition in glxgridviewpluginbase{000a0000}.dso.
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   109
  
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   110
  if ($line =~ /Error: L6410W: Symbol (.*) with .*, cannot use definition in (\S+)./)
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   111
  	{
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   112
  	my $symbol = $1;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   113
  	my $dll = $2;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   114
		$symbol =~ s/&amp;/&/g;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   115
		$symbol =~ s/&gt;/>/g;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   116
		$symbol =~ s/&lt;/</g;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   117
  	$visibility_problems{"$current_package\t$dll:\t$symbol\timpacts $linktarget"} = 1;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   118
  	next;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   119
		}
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   120
	# Error: L6218E: Undefined symbol RHTTPTransaction::Session() const (referred from caldavutils.o).
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   121
	
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   122
	if ($line =~ /Error: L6218E: Undefined symbol (.*) \(referred from (\S+)\)/)
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   123
		{
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   124
		my $symbol = $1;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   125
		my $impacted = $2;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   126
		$symbol =~ s/&amp;/&/g;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   127
		$symbol =~ s/&gt;/>/g;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   128
		$symbol =~ s/&lt;/</g;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   129
  	$visibility_problems{"$current_package\t???\t$symbol\timpacts $linktarget, $impacted"} = 1;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   130
		next;		
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   131
		}
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   132
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   133
	# &quot;J:/sf/app/commonemail/emailservices/emailclientapi/src/emailmailbox.cpp&quot;, line 49: Warning:  #830-D: function &quot;CBase::operator new(TUint, TLeave)&quot; has no corresponding operator delete (to be called if an exception is thrown during initialization of an allocated object)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   134
	
4
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   135
	if ($line =~ /^("|&quot;)(...*)("|&quot;), line (\d+): ([^:]+):\s+([^:]+): (.*)$/)
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   136
		{
4
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   137
		my $filename = $2;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   138
		my $lineno = $4;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   139
		my $messagetype = $5;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   140
		my $message_id = $6;
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   141
		my $message = $7;
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   142
		
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   143
		if ($messagetype eq "Warning" && !$warnings)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   144
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   145
			next;		# ignore warnings
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   146
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   147
		
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   148
		$filename =~ s/^.://;		# remove drive letter
11
3dcb71781467 Various tweaks to the summarising tools
William Roberts <williamr@symbian.org>
parents: 6
diff changeset
   149
		$filename =~ s/\\/\//g;	# Unix file separators please
3
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   150
		
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   151
		$message =~ s/&quot;/\"/g;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   152
		$message =~ s/&amp;/&/g;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   153
		$message =~ s/&gt;/>/g;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   154
		$message =~ s/&lt;/</g;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   155
		$message =~ s/&#39;/'/g;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   156
		my $generic_message = "$messagetype: $message_id: $message";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   157
		$generic_message =~ s/'offsetof'/"offsetof"/;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   158
		$generic_message =~ s/'([^a-zA-Z])'/"\1"/g;	# don't catch ';' in next substitution
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   159
		$generic_message =~ s/\"[^\"]+\"/XX/g;	# suppress quoted bits of the actual instance
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   160
		
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   161
		if (!defined $message_ids{$generic_message})
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   162
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   163
			$message_ids{$generic_message} = $message_id;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   164
			$messages_by_id{$message_id} = $generic_message;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   165
			$all_message_counts{$message_id} = 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   166
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   167
		else
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   168
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   169
			$all_message_counts{$message_id} += 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   170
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   171
		my $instance = sprintf("%s:%d: %s-#%d", $filename, $lineno, $messagetype, $message_id);
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   172
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   173
		my $packages = $packages_by_file{$filename};
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   174
		if (!defined $packages)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   175
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   176
			$packages_by_file{$filename} = "\t$current_package\t";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   177
			$package_count_by_file{$filename} = 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   178
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   179
		else
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   180
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   181
			if (index($packages,"\t$current_package\t") < 0)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   182
				{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   183
				$packages_by_file{$filename} .= "\t$current_package\t";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   184
				$package_count_by_file{$filename} += 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   185
				}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   186
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   187
		
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   188
		if (defined $files{$instance})
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   189
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   190
			# already seen this one
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   191
			next;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   192
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   193
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   194
		if (!defined $unique_message_counts{$message_id})
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   195
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   196
			$unique_message_counts{$message_id} = 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   197
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   198
		else
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   199
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   200
			$unique_message_counts{$message_id} += 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   201
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   202
		$files{$instance} = $message;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   203
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   204
		if (!defined $files_by_message_id{$message_id})
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   205
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   206
			$files_by_message_id{$message_id} = $filename;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   207
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   208
		else
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   209
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   210
			$files_by_message_id{$message_id} .= "\n$filename";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   211
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   212
				
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   213
		my $error = sprintf "%-5d: %s: %s: %s", $lineno, $messagetype, $message_id, $message;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   214
		if (!defined $errors_by_file{$filename})
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   215
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   216
			$errors_by_file{$filename} = $error;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   217
			$error_count_by_file{$filename} = 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   218
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   219
		else
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   220
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   221
			$errors_by_file{$filename} .= "\n$error";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   222
			$error_count_by_file{$filename} += 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   223
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   224
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   225
		next;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   226
		}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   227
	}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   228
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   229
# clean up the file lists
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   230
my %filecount_by_message_id;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   231
foreach my $id (keys %files_by_message_id)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   232
	{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   233
	my @longlist = split /\n/, $files_by_message_id{$id};
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   234
	my %uniq;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   235
	foreach my $file (@longlist)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   236
		{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   237
		$uniq{$file} = 1;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   238
		}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   239
	my $uniqlist = join( "\n\t", sort keys %uniq);
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   240
	$files_by_message_id{$id} = $uniqlist;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   241
	$filecount_by_message_id{$id} = scalar keys %uniq;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   242
	}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   243
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   244
print "\n\n====Occurrences of messages (distinct, all)\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   245
foreach my $id ( sort {$unique_message_counts{$b} <=> $unique_message_counts{$a}} keys %unique_message_counts)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   246
	{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   247
	printf "%-6d\t%-6d\t%s\n", $unique_message_counts{$id}, $all_message_counts{$id}, $messages_by_id{$id};
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   248
	}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   249
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   250
print "\n\n====Files affected per message\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   251
foreach my $id ( sort {$filecount_by_message_id{$b} <=> $filecount_by_message_id{$a}} keys %filecount_by_message_id)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   252
	{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   253
	printf "%-6d\t%s\n", $filecount_by_message_id{$id}, $messages_by_id{$id};
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   254
	if ($verbose)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   255
		{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   256
		print "\t", $files_by_message_id{$id};
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   257
		}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   258
	}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   259
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   260
print "\n\n====Packages impacted (if > 1)\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   261
foreach my $file ( sort {$package_count_by_file{$b} <=> $package_count_by_file{$a}} keys %package_count_by_file)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   262
	{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   263
	if ($package_count_by_file{$file} < 2)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   264
		{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   265
		next;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   266
		}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   267
	my ($empty,@packages) = split /\t+/, $packages_by_file{$file};
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   268
	printf "%-6d\t%s\n\t(%s)\n",$package_count_by_file{$file}, $file, join(", ", @packages);
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   269
	}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   270
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   271
print "\n\n====Affected files by package\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   272
my $current_package = "";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   273
my @currentfiles;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   274
foreach my $file (sort keys %error_count_by_file)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   275
	{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   276
	my ($root, $sf, $layer, $packagename, @rest) = split /[\/\\]/, $file;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   277
	my $package = "$sf/$layer/$packagename";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   278
	if ($layer eq "include")
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   279
		{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   280
		$package = "$sf/$layer";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   281
		}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   282
	if ($package ne $current_package)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   283
		{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   284
		if ($current_package ne "")
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   285
			{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   286
			printf "%-6d\t%s\n", scalar @currentfiles, $current_package;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   287
			print join("\n",@currentfiles);
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   288
			print "\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   289
			}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   290
		$current_package = $package;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   291
		@currentfiles = ();
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   292
		}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   293
	my $filedetails = sprintf "\t%-6d\t%s", $error_count_by_file{$file}, $file;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   294
	push @currentfiles, $filedetails;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   295
	}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   296
printf "%-6d\t%s\n", scalar @currentfiles, $current_package;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   297
print join("\n",@currentfiles);
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   298
print "\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   299
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   300
print "\n\n====Messages by file\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   301
foreach my $file ( sort keys %error_count_by_file)
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   302
	{
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   303
	my @details = split "\n", $errors_by_file{$file};
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   304
	printf "%-6d\t%s\n\t", $error_count_by_file{$file}, $file;
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   305
	print join("\n\t", @details);
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   306
	print "\n";
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   307
	}
5578c2bec847 Update gcce summary tool to note the affected packages, and update summary text
William Roberts <williamr@symbian.org>
parents:
diff changeset
   308
4
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   309
print "\n\n====Visibility problems\n";
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   310
foreach my $problem ( sort keys %visibility_problems)
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   311
	{
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   312
	print "$problem\n";
c0296ad2454d Extend the summarise_rvct4_errors.pl script so that it picks up linker errors
William Roberts <williamr@symbian.org>
parents: 3
diff changeset
   313
	}
6
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
   314
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
   315
print "\n\n====Missing files\n";
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
   316
foreach my $file ( sort {$missing_files{$b} <=> $missing_files{$a}} keys %missing_files)
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
   317
	{
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
   318
	printf "%-6d\t%s\n",$missing_files{$file}, $file;
2618a0f10e3e Collate the RVCT "cannot open source input file" errors to list the missing files
William Roberts <williamr@symbian.org>
parents: 4
diff changeset
   319
	}