--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/deprecated/buildtools/buildsystemtools/scanlog/compare_summary.pl Wed Oct 27 16:03:51 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;
+