#!/usr/bin/perl -w # ************************************************************* # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # ************************************************************* # # $Id$ # # GCOV_RESULT # # Helper, to interpret the result and put the result via html in a database. # Put into DB works via php. # # Q: Why perl? # A: regexp ;-) # use strict; use File::Basename; use Getopt::Long; use Time::localtime; our $version_info = 'gcov helper $Revision: 1.2 $ '; our $help; # Help option flag our $version; # Version option flag # our $infile; our $usedFunctions; # name of all functions filename, which have a value > 0 our $nonusedFunctions; # name of all functions filename, which have a value == 0 our $complete; # name of all functions filename, which have a value == 100 our $incomplete; # name of all functions filename, which have a value > 0 && < 100 our $environment; our $major; our $minor; our $cwsname; our $outputDir; # Prototypes sub print_usage(*); sub read_gcov_function_file($); sub create2DigitNumber($); # Parse command line options if (!GetOptions( "help" => \$help, "version" => \$version, "usedfunctions=s" => \$usedFunctions, "nonusedfunctions=s" => \$nonusedFunctions, "complete=s" => \$complete, "incomplete=s" => \$incomplete, "cwsname=s" => \$cwsname, "major=s" => \$major, "minor=s" => \$minor, "environment=s" => \$environment, "outputdir=s" => \$outputDir )) { print_usage(*STDERR); exit(1); } # Check for help option if ($help) { print_usage(*STDOUT); exit(0); } # Check for version option if ($version) { print("$version_info\n"); exit(0); } # check if enough parameters # if ($#ARGV < 0) # { # print("No input filename specified\n"); # print_usage(*STDERR); # exit(1); # } # ------------------------------------------------------------------------------ my $sURL = "http://mahler.germany.sun.com/qadev/baselib/gcov_result_in_db_putter.php"; my $next = "?"; if ($complete) { my $result = `cat $complete | wc -l`; chomp($result); $result =~ / *(\d+)/; $sURL = $sURL . "$next" . "complete=$1"; $next = "&"; } if ($nonusedFunctions) { my $result = `cat $nonusedFunctions | wc -l`; chomp($result); $result =~ / *(\d+)/; $sURL = $sURL . "$next" . "notused=$1"; $next = "&"; } if ($usedFunctions) { my $result = `cat $usedFunctions | wc -l`; chomp($result); $result =~ / *(\d+)/; $sURL = $sURL . "$next" . "used=$1"; $next = "&"; } if ($incomplete) { my $result = `cat $incomplete | wc -l`; chomp($result); $result =~ / *(\d+)/; $sURL = $sURL . "$next" . "incomplete=$1"; $next = "&"; } if ($cwsname) { # qadev8 $sURL = $sURL . "$next" . "cwsname=$cwsname"; $next = "&"; } if ($major) { # srx645 $sURL = $sURL . "$next" . "major=$major"; $next = "&"; } if ($minor) { # m3s1 $sURL = $sURL . "$next" . "minor=$minor"; $next = "&"; } if ($environment) { # unxlngi5 $sURL = $sURL . "$next" . "environment=$environment"; $next = "&"; } my $year = localtime->year() + 1900; my $month = create2DigitNumber(localtime->mon() + 1); my $day = create2DigitNumber(localtime->mday()); $sURL = $sURL . "$next" . "date=$year-$month-$day"; $next = "&"; my $output; if ($outputDir) { chomp($outputDir); $output = $outputDir; } # check if output ends with "/" if ( $output =~ /\/$/ ) { print "Output name ends with '/'\n"; } else { print "Output name does not end with '/'\n"; $output = $output . "/"; } $output = $output . "php_result.txt"; my $result = `wget -O $output "$sURL"`; print "$sURL\n"; print `cat $output`; # ---------------------------------------------------------------------------- sub print_usage(*) { local *HANDLE = $_[0]; my $tool_name = basename($0); print(HANDLE < 0 -n, --nonusedfunctions count of all functions, which have a value == 0 -co, --complete count of all functions, which have a value == 100 -i, --incomplete count of all functions, which have a value > 0 && < 100 -cw, --cwsname set cwsname -ma, --major set major number -mi, --minor set minor number -e, --environment set environment -o, --outputdir set the directory, where to store the wget result -h, --help Print this help, then exit -v, --version Print version number, then exit END_OF_USAGE ; } # ------------------------------------------------------------------------------ sub create2DigitNumber($) { my $digit = $_[0]; my $str; my $nDigitLen = length $digit; if ($nDigitLen == 1) { $str = "0" . $digit; } else { if ($nDigitLen > 2) { $str = substr $digit, $nDigitLen - 2, 2; } else { $str = $digit; } } return $str; }