diff -r 000000000000 -r 094583676ce7 wvsettings20/tsrc/basic/private/test coverage/api_methods.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvsettings20/tsrc/basic/private/test coverage/api_methods.pl Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,95 @@ +# +# Copyright (c) 2005-2007 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: Parse headers files and search for public methods +# + +#!perl -w + +use Getopt::Long; + +my $help = 0; +my $output_path = "."; +GetOptions ("path=s" => \@api_path, + "output=s" => \$output_path, + "verbose"=> \$verbose, + "help" => \$help); + +if ($help or !@api_path){ + print "\nPath parameter is mandatory!\n" unless $help; + print "\n"; + print "This script will parse header files looking for exported methods\n"; + print "Parameters:\n"; + print "\t --path -p -> (mandatory) path where parsing will start, multi-parameters are allowed\n"; + print "\t --output -o -> path where output will be stored\n"; + print "\t --verbose -v -> verbose output messages\n"; + print "\t --help -h -> print this help\n"; + exit; +} + +my $file_location; +my $file_name; + +$output_path .="\\"; +`md $output_path 2>&1`; + +foreach $api_path (@api_path){ + + @dirs = `dir $api_path\\*.h /s/b 2>&1`; + chomp @dirs; + $tmp_path = $api_path; + $tmp_path =~ s/\\/\./g; + + foreach (@dirs) { + $file_location = $1 if /$tmp_path(.+)/; + $file_name = "$1.txt" if /(\w+\.\w+)$/; + print "Public methods from file ($file_name): $api_path$file_location\n" if $verbose;; + open (APIFILE, "$api_path$file_location") or warn "Can not open file $file_location"; + open (OUT, ">>$output_path$file_name") or warn "Can not create file $file_name"; + + while () + { + #remove white chars + chomp; + s/^\s+//; + + #find class name + $class = $1 if /^\s*class (\w+)/i; + + #concatenate lines if definision is in multiline + if ($line){ + $line .= $_; + next unless /;/; #next if line does not contain end of declaration + } + + #search for all IMPORT_C lines + if (/IMPORT_C/){ + $line = "$class"."::"."$1" if /IMPORT_C.+?([~\[\]\w]+\s*\(.*)/i; + next unless /;/; #next if line does not contain full declaration + } + + $line .= "\n" if /;/; + #remove some unnesessary chars + if ($line) { + $line = "$1\n" if ($line =~ /(.+\))/); + $line =~ s/^\s+// if $line; + print "\t$line" if $verbose and $line; + print OUT "$line" if $line; + } + $line = ""; + } + close OUT; + close APIFILE; + } + +} \ No newline at end of file