devicediagnostics/group/parse_build_warnings.pl
changeset 0 3ce708148e4d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devicediagnostics/group/parse_build_warnings.pl	Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,140 @@
+#
+# 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:
+#
+######################################################################
+# ****************************************Script info : See footer.****************************************
+######################################################################
+
+use strict;
+use Getopt::Long;
+
+my($log_file,$warning_file,$help,$line,%warnings,$comp_path,%type_by_comp);
+
+GetOptions (
+            'log_file=s' => \$log_file,
+			'warning_file=s' => \$warning_file,
+            'help' => \$help
+            );
+
+usage() if($help);
+
+if(!$log_file){
+    print "ERROR : No log file parse! Exiting...\n";
+    usage();
+} #if
+
+$warning_file=$log_file.".warnings.csv" if(!$warning_file);
+
+open(IN,$log_file) || die "Cannot open $log_file\n";
+while($line=<IN>){
+	my $key="";
+	my $val="";
+	chomp($line);
+	if($line =~ /^Chdir\s+(.*)/i){
+		$comp_path=$1;
+		$comp_path=~ s/\\group$//i;
+		#$type_by_comp{$comp_path};
+	}#if
+	if($line =~ /\bwarning\b/ig){
+		if($line =~ /\bwarning\s+(\w+\d+)\:/i || $line =~ /\bwarning\:\s+(\#\d+\-\w+)\:/i || $line =~ /\bwarning\:\s+(\w+\d+\w+)\:/i){
+			$key=$1;
+			if(exists $warnings{$key}){
+				$warnings{$key}++;
+			}
+			else{
+				$warnings{$key}=1;
+			}#if
+		# }
+		# else{
+			# push @other_warnings,($val);
+		}#if
+		if ($key ne ""){
+			if(exists $type_by_comp{$comp_path}{$key}){
+				$type_by_comp{$comp_path}{$key}++;
+			}
+			else{
+				$type_by_comp{$comp_path}{$key}=1;
+			}#if
+		}#if
+	}#if
+
+}#while
+close(IN);
+
+open(OUT,">".$warning_file) || die "Cannot open $warning_file\n";
+
+print OUT "\nCOUNTING WARNINGS BY TYPE\n\n";
+print OUT "Warning,Count\n";
+for my $w ( sort keys %warnings ) {
+	print OUT "$w,$warnings{$w}\n";
+}#for
+print OUT "\n";
+
+print OUT "\nSHOWING SPECIFIC WARNINGS BY COMPONENT AND TYPE\n\n";
+print OUT "Component,Total warnings by component,Warnings\n";
+
+for my $co ( sort keys %type_by_comp ) {
+    print OUT "\n$co,";
+    my @ctvals=values %{ $type_by_comp{$co} };
+    my $ctsum=0;
+    foreach my $cval(@ctvals){
+    	$ctsum+=$cval;
+    }#foreach
+    print OUT "$ctsum,";
+    for my $ty ( sort keys %{ $type_by_comp{$co} } ) {
+         print OUT " $ty=$type_by_comp{$co}{$ty} ";
+	}#for
+}#for
+print OUT "\n\n";
+
+close(OUT);
+
+#--------------------------------------------------------------#
+
+sub usage{
+	while(<DATA>){
+		print;
+	} #while
+	exit;
+} #sub
+
+__DATA__
+
+#--------------------------------------------------------------#
+#-------------------------- USAGE -----------------------------#
+#--------------------------------------------------------------#
+ Script name:	parse_build_warnings.pl
+
+ Copyright (c) 2007-2008 Nokia. All rights reserved.
+
+ Purpose:
+
+	To parse warning messages from s60 platform build log.
+
+ Revision History:
+
+	v0.1.0 19.09.2007 Qvist Heikki 	Initial version.
+	v0.1.1 20.09.2007 Qvist Heikki 	Count warnings.
+	v0.1.2 10.10.2007 Qvist Heikki 	Count warnings per a component.
+	v0.2.0 10.01.2008 Qvist Heikki 	Clean useless output. Fix counters (0 -> 1).
+	v0.3.0 10.01.2008 Qvist Heikki 	Output to CSV-file for Excel reading.
+    
+    Commandline options:
+    
+        -h show this info.
+        -l log file to parse out.
+        -w output file contain warnings.
+        	If not given, <logfile>.warnings.txt is generated.
+#--------------------------------------------------------------#