deprecated/buildtools/buildsystemtools/scanlog/compare_summary.pl
changeset 655 3f65fd25dfd4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deprecated/buildtools/buildsystemtools/scanlog/compare_summary.pl	Mon Oct 18 16:16:46 2010 +0800
@@ -0,0 +1,203 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "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:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+# usage:
+# perl compare_summary.pl new_build.summary last_build.summary > summary.summary
+#
+
+sub usage
+	{
+	print "syntax: perl compare_summary.pl new_build.summary last_build.summary\n";
+	exit 1;
+	}
+
+sub showtable
+	{
+	my $f=$_[0];
+	my $s=$_[1];
+	my %first=%$f;
+	my %second=%$s;
+
+	my %comps;
+	my $key,$n,$n2,$temp;
+
+	while ($key = each %first) {
+		$comps{$key}++;}
+	while ($key = each %second){
+		$comps{$key}++;}
+
+	foreach $key (sort keys %comps)
+		{
+		$n=$first{$key}; if ($n==0) {$n="0";}
+		$n2=$second{$key}; if ($n2==0) {$n2="0";}
+		$d=$n-$n2;
+		if ($d==0) {$d="";}
+		if ($d > 0) { $d="+$d";}
+
+		$temp=sprintf "(%s)",$n2;
+		printf "%-24.24s   %-5.5s%-7.7s\t\t%s\n", $key, $n, $temp, $d;
+		}
+	}
+
+
+
+$summaryfile1=$ARGV[0];
+$summaryfile2=$ARGV[1];
+
+if (($summaryfile1 eq "") or ($summaryfile2 eq "")) { usage() };
+
+open(FILE1, "< $summaryfile1") || die ("can't open summary file: $!");
+open(FILE2, "< $summaryfile2") || die ("can't open summary file: $!");
+
+# find the start of the error summary in file 1
+while (<FILE1>)
+	{
+	if (/Total+\s+(\S+)+\s+(\d+)+\s+(\d+)/)
+		{
+		$build1time=$1;
+		$build1errors=$2;
+		$build1warnings=$3;
+		last;
+		}
+	}
+# find the start of the error summary in file 2
+while (<FILE2>)
+	{
+	if (/Total+\s+(\S+)+\s+(\d+)+\s+(\d+)/)
+		{
+		$build2time=$1;
+		$build2errors=$2;
+		$build2warnings=$3;
+		last;
+		}
+	}
+
+print "Total\t\t$build1time($build2time)\t$build1errors($build2errors)\t$build1warnings($build2warnings)\n\n";
+
+# compare builds
+$build1haserrors=0;
+$build2haserrors=0;
+
+# find the "Fatal errors" line
+$dummy=<FILE1>;$dummy=<FILE1>;
+if ($dummy =~ /Fatal Errors by Component/) { $build1haserrors=1;}
+$dummy=<FILE2>;$dummy=<FILE2>;
+if ($dummy =~ /Fatal Errors by Component/) { $build2haserrors=1;}
+
+if ($build1haserrors)
+	{
+	while (<FILE1>)
+		{
+		if (/^(\S+)+\s+(\d+)/)
+			{
+			$theerrors1{$1}="$2";
+			}
+		else
+			{
+			last;
+			}
+		}
+	}
+if ($build2haserrors)
+	{
+	while (<FILE2>)
+		{
+		if (/^(\S+)+\s+(\d+)/)
+			{
+			$theerrors2{$1}="$2";
+			}
+		else
+			{
+			last;
+			}
+		}
+	}
+
+if ($build1haserrors || $build2haserrors)
+	{
+	print "Fatal Errors by Component\n";
+	showtable(\%theerrors1, \%theerrors2);
+	print;
+	}
+
+
+# do the warnings now
+$build1haswarnings=0;
+$build2haswarnings=0;
+seek FILE1,0,0;
+seek FILE2,0,0;
+while (<FILE1>)
+	{
+	if (/Warnings by Component/)
+		{
+		$build1haswarnings=1;
+		last;
+		}
+	}
+
+while (<FILE2>)
+	{
+	if (/Warnings by Component/)
+		{
+		$build2haswarnings=1;
+		last;
+		}
+	}
+
+# compare builds
+if ($build1haswarnings || $build2haswarnings)
+	{
+
+
+if ($build1haswarnings)
+	{
+	while (<FILE1>)
+		{
+		if (/^(\S+)\s+(\d+)/)
+			{
+			$thewarnings1{$1}=$2;
+			}
+		else
+			{
+			last;
+			}
+		}
+	}
+if ($build2haswarnings)
+	{
+	while (<FILE2>)
+		{
+		if (/^(\S+)\s+(\d+)/)
+			{
+			$thewarnings2{$1}=$2;
+			}
+		else
+			{
+			last;
+			}
+		}
+	}
+
+	print "Warnings by Component\n";
+	print "                          this (last)\n";
+	showtable(\%thewarnings1, \%thewarnings2);
+	}
+
+
+
+
+close FILE1;
+close FILE2;
+