Moved bc_filter tool to utilities repo.
authorMaciej Seroka <maciejs@symbian.org>
Thu, 18 Mar 2010 15:55:19 +0000
changeset 935 7da5b560789a
parent 934 a4f43b5e3c81
child 936 e6a0e92cf215
Moved bc_filter tool to utilities repo.
common/tools/bc_filter.pl
--- a/common/tools/bc_filter.pl	Wed Mar 17 11:57:22 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (c) 2009 Symbian Foundation Ltd
-# This component and the accompanying materials are made available
-# under the terms of the License "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Symbian Foundation Ltd - initial contribution.
-#	Maciej Seroka, maciejs@symbian.org
-#
-# Description:
-#   This is a tool for filtering static BC header reports.
-#
-
-use strict;
-use XML::Simple;
-use File::Copy;
-use Tie::File;
-use Data::Dumper;
-
-my $report;
-my $header_list;
-my $destfile = "stripped_headers_report.xml";
-my $del_ok_issues = 1; # This variable determines whether to delete OK issues first.
-my $del_comp_issues = 0; # This variable determies whether to delete Compilation errors.
-my $del_boost_issues = 1; # This variable determies whether to delete issues for Boost API headers.
-
-my $n;
-my $m;
-my $file_name;
-my $delete_node;
-
-if ($ARGV[1]) {
-	$report = $ARGV[0];
-	$header_list = $ARGV[1];
-} else { 
-	die "Missing parameter(s). For example: bc_filter.pl headers_report.xml public_headers.txt"; 
-}
-
-# Parse the input XML into hashrefs.
-print "Parsing " . $report . "... ";
-my $current_report = XMLin("./$report", keeproot => 1,
-    forcearray => [ 'header', 'baselineversion', 'currentversion', 'timestamp', 'day', 'month', 'year', 'hour', 'minute', 'second', #
-	'haversion', 'formatversion', 'cmdlineparms', 'parm', 'pname', 'pvalue', 'knownissuesversion', 'os', 'version', 'buildweek', 'issuelist',#
-	'headerfile', 'filename', 'comparefilename', 'status', 'comment', 'issue', 'checksum', 'shortname', 'issueid', 'typeid', 'identityid', #
-	'identitydescription', 'typestring', 'cause', 'documentation', 'ignoreinformation', 'linenumber', 'severity', 'scseverity'], keyattr => [] );
-print "complete \n";
-
-# Load Public API definitions
-my @lines;
-tie @lines, 'Tie::File', $header_list or die ("Cannot tie file \"$header_list\". $!\n");
-
-# Get number of header files
-my $header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
-print "Number of all header files with issues: $header_num \n";
-
-# Delete known issues.
-if ($del_ok_issues) {
-	$n = 0;
-	while ($n < $header_num) {
-		$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
-		# Delete the node if known issue.
-		if ($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'status'}->[0] eq "OK") {
-			print "Known issue: $file_name ...deleted\n";
-			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
-			$header_num--;
-		} else {
-#			print "Unknown issue: $file_name \n";
-			$n++;
-		}
-	}
-	# Get number of header files again
-	$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
-	print "Number of remaining header files with issues: $header_num \n";
-}
-
-# Delete compilation issues.
-# Assumption: Compilation issue is always the top issue (and probably the only one)
-if ($del_comp_issues) {
-	$n = 0;
-	while ($n < $header_num) {
-		$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
-		if (($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'issue'}->[0]->{'typestring'}->[0] eq "has compilation errors") && #
-			($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'status'}->[0] ne "OK")) { # Delete the node if compilation error.
-			print "$file_name has compilation errors \n";
-			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
-			$header_num--;
-		} else {
-			$n++;
-		}
-	}
-	# Get number of header files again
-	$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
-	print "Number of header files with non-compilation issues: $header_num \n";
-}
-
-# Delete Boost API related issues (Boost API headers are not present in any of the Public SDK!).
-if ($del_boost_issues) {
-	$n = 0;
-	while ($n < $header_num) {
-		$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
-		# Delete the node if Boost API header.
-		if ($file_name =~ m/\\boost/) {
-			print "Boost API: $file_name \n";
-			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
-			$header_num--;
-		} else {
-			$n++;
-		}
-	}
-	# Get number of header files again
-	$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
-	print "Number of non-Boost API header files: $header_num \n";
-}
-
-# Delete non-public API issues.
-$n = 0;
-while ($n < $header_num) {
-	$file_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}->[$n]->{'shortname'}->[0];
-	$m = 0;
-	$delete_node = 1;
-	foreach (@lines) { # Check against header list.
-		if (lc($file_name) eq lc(@lines[$m])) {	# Mark the node to NOT be deleted.
-			$delete_node = 0;
-			last;
-		}
-		$m++;
-	}
-	# Delete the node if non-public issue.
-	if ($delete_node) {
-		print "Header file: $file_name not found in Public API definition file... deleted\n";
-		splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}},$n, 1);
-		$header_num--;
-	} else {
-		$n++;
-	}
-}
-
-# Get number of header files again
-$header_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'headerfile'}};
-print "Final number of header files with issues: $header_num \n";
-
-# Close Public API definition file.
-untie @lines;
-
-# Write new XML to dest file.
-open OUT,">$destfile" or die("Cannot open file \"$destfile\" for writing. $!\n");
-print OUT XMLout($current_report, keeproot => 1);
-close OUT;
-
-# Insert:	<?xml version="1.0" encoding="ASCII" standalone="no" ?>
-#			<?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?>
-tie @lines, 'Tie::File', $destfile or die ("Cannot tie file \"$destfile\". $!\n");
-unshift @lines, "<?xml-stylesheet type=\"text/xsl\" href=\"BBCResults.xsl\"?>";
-unshift @lines, "<?xml version=\"1.0\" encoding=\"ASCII\" standalone=\"no\" ?>";
-untie @lines;