common/tools/bc_filter.pl
author Maciej Seroka <maciejs@symbian.org>
Wed, 03 Mar 2010 10:25:44 +0000
changeset 910 e460b00fdc7b
permissions -rw-r--r--
Added tool for filtering BC header reports
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
910
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     1
#!/usr/bin/perl
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     2
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     3
# Copyright (c) 2009 Symbian Foundation Ltd
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     4
# This component and the accompanying materials are made available
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     6
# which accompanies this distribution, and is available
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     8
#
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     9
# Initial Contributors:
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    11
#	Maciej Seroka, maciejs@symbian.org
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    12
#
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    13
# Description:
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    14
#   This is a tool for filtering static BC header reports.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    15
#
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    16
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    17
use strict;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    18
use XML::Simple;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    19
use File::Copy;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    20
use Tie::File;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    21
use Data::Dumper;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    22
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    23
my $report;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    24
my $header_list;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    25
my $destfile = "stripped_headers_report.xml";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    26
my $del_ok_issues = 1; # This variable determines whether to delete OK issues first.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    27
my $del_comp_issues = 0; # This variable determies whether to delete Compilation errors.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    28
my $del_boost_issues = 1; # This variable determies whether to delete issues for Boost API headers.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    29
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    30
my $n;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    31
my $m;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    32
my $file_name;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    33
my $delete_node;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    34
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    35
if ($ARGV[1]) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    36
	$report = $ARGV[0];
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    37
	$header_list = $ARGV[1];
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    38
} else { 
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    39
	die "Missing parameter(s). For example: bc_filter.pl headers_report.xml public_headers.txt"; 
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    40
}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    41
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    42
# Parse the input XML into hashrefs.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    43
print "Parsing " . $report . "... ";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    44
my $current_report = XMLin("./$report", keeproot => 1,
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    45
    forcearray => [ 'header', 'baselineversion', 'currentversion', 'timestamp', 'day', 'month', 'year', 'hour', 'minute', 'second', #
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    46
	'haversion', 'formatversion', 'cmdlineparms', 'parm', 'pname', 'pvalue', 'knownissuesversion', 'os', 'version', 'buildweek', 'issuelist',#
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    47
	'headerfile', 'filename', 'comparefilename', 'status', 'comment', 'issue', 'checksum', 'shortname', 'issueid', 'typeid', 'identityid', #
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    48
	'identitydescription', 'typestring', 'cause', 'documentation', 'ignoreinformation', 'linenumber', 'severity', 'scseverity'], keyattr => [] );
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    49
print "complete \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    50
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    51
# Load Public API definitions
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    52
my @lines;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    53
tie @lines, 'Tie::File', $header_list or die ("Cannot tie file \"$header_list\". $!\n");
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    54
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    55
# Get number of header files
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    56
my $header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    57
print "Number of all header files with issues: $header_num \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    58
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    59
# Delete known issues.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    60
if ($del_ok_issues) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    61
	$n = 0;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    62
	while ($n < $header_num) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    63
		$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    64
		# Delete the node if known issue.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    65
		if ($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'status'}->[0] eq "OK") {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    66
			print "Known issue: $file_name ...deleted\n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    67
			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    68
			$header_num--;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    69
		} else {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    70
#			print "Unknown issue: $file_name \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    71
			$n++;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    72
		}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    73
	}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    74
	# Get number of header files again
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    75
	$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    76
	print "Number of remaining header files with issues: $header_num \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    77
}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    78
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    79
# Delete compilation issues.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    80
# Assumption: Compilation issue is always the top issue (and probably the only one)
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    81
if ($del_comp_issues) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    82
	$n = 0;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    83
	while ($n < $header_num) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    84
		$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    85
		if (($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'issue'}->[0]->{'typestring'}->[0] eq "has compilation errors") && #
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    86
			($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'status'}->[0] ne "OK")) { # Delete the node if compilation error.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    87
			print "$file_name has compilation errors \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    88
			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    89
			$header_num--;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    90
		} else {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    91
			$n++;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    92
		}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    93
	}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    94
	# Get number of header files again
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    95
	$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    96
	print "Number of header files with non-compilation issues: $header_num \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    97
}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    98
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    99
# Delete Boost API related issues (Boost API headers are not present in any of the Public SDK!).
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   100
if ($del_boost_issues) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   101
	$n = 0;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   102
	while ($n < $header_num) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   103
		$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   104
		# Delete the node if Boost API header.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   105
		if ($file_name =~ m/\\boost/) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   106
			print "Boost API: $file_name \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   107
			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   108
			$header_num--;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   109
		} else {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   110
			$n++;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   111
		}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   112
	}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   113
	# Get number of header files again
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   114
	$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   115
	print "Number of non-Boost API header files: $header_num \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   116
}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   117
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   118
# Delete non-public API issues.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   119
$n = 0;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   120
while ($n < $header_num) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   121
	$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   122
	$m = 0;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   123
	$delete_node = 1;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   124
	foreach (@lines) { # Check against header list.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   125
		if (lc($file_name) eq lc(@lines[$m])) {	# Mark the node to NOT be deleted.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   126
			$delete_node = 0;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   127
			last;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   128
		}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   129
		$m++;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   130
	}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   131
	# Delete the node if non-public issue.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   132
	if ($delete_node) {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   133
		print "Header file: $file_name not found in Public API definition file... deleted\n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   134
		splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   135
		$header_num--;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   136
	} else {
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   137
		$n++;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   138
	}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   139
}
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   140
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   141
# Get number of header files again
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   142
$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   143
print "Final number of header files with issues: $header_num \n";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   144
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   145
# Close Public API definition file.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   146
untie @lines;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   147
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   148
# Write new XML to dest file.
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   149
open OUT,">$destfile" or die("Cannot open file \"$destfile\" for writing. $!\n");
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   150
print OUT XMLout($current_report, keeproot => 1);
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   151
close OUT;
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   152
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   153
# Insert:	<?xml version="1.0" encoding="ASCII" standalone="no" ?>
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   154
#			<?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?>
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   155
tie @lines, 'Tie::File', $destfile or die ("Cannot tie file \"$destfile\". $!\n");
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   156
unshift @lines, "<?xml-stylesheet type=\"text/xsl\" href=\"BBCResults.xsl\"?>";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   157
unshift @lines, "<?xml version=\"1.0\" encoding=\"ASCII\" standalone=\"no\" ?>";
e460b00fdc7b Added tool for filtering BC header reports
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   158
untie @lines;