diff -r 7c11c3d8d025 -r 60be34e1b006 deprecated/buildtools/buildsystemtools/scanlog/compare_summary.pl --- /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 () + { + 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 () + { + 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=;$dummy=; +if ($dummy =~ /Fatal Errors by Component/) { $build1haserrors=1;} +$dummy=;$dummy=; +if ($dummy =~ /Fatal Errors by Component/) { $build2haserrors=1;} + +if ($build1haserrors) + { + while () + { + if (/^(\S+)+\s+(\d+)/) + { + $theerrors1{$1}="$2"; + } + else + { + last; + } + } + } +if ($build2haserrors) + { + while () + { + 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 () + { + if (/Warnings by Component/) + { + $build1haswarnings=1; + last; + } + } + +while () + { + if (/Warnings by Component/) + { + $build2haswarnings=1; + last; + } + } + +# compare builds +if ($build1haswarnings || $build2haswarnings) + { + + +if ($build1haswarnings) + { + while () + { + if (/^(\S+)\s+(\d+)/) + { + $thewarnings1{$1}=$2; + } + else + { + last; + } + } + } +if ($build2haswarnings) + { + while () + { + 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; +