1#!/usr/bin/perl 2# 3# Copyright (C) 2006 Daniel Berrange 4# 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 19 20print <<EOF; 21<html> 22<head> 23<title>Coverage report for $ARGV[0]</title> 24<style type="text/css"> 25 span.perfect { 26 background: rgb(0,255,0); 27 } 28 span.terrible { 29 background: rgb(255,0,0); 30 } 31</style> 32</head> 33<body> 34<h1>Coverage report for $ARGV[0]</h1> 35 36<pre> 37EOF 38 39 40while (<>) { 41 s/&/&/g; 42 s/</</g; 43 s/>/>/g; 44 45 if (/^\s*function (\S+) called (\d+) returned \d+% blocks executed \d+%/) { 46 my $class = $2 > 0 ? "perfect" : "terrible"; 47 $_ = "<span class=\"$class\" id=\"" . $1 . "\">$_</span>"; 48 } elsif (/^\s*branch\s+\d+\s+taken\s+(\d+)%\s+.*$/) { 49 my $class = $1 > 0 ? "perfect" : "terrible"; 50 $_ = "<span class=\"$class\">$_</span>"; 51 } elsif (/^\s*branch\s+\d+\s+never executed.*$/) { 52 my $class = "terrible"; 53 $_ = "<span class=\"$class\">$_</span>"; 54 } elsif (/^\s*call\s+\d+\s+never executed.*$/) { 55 my $class = "terrible"; 56 $_ = "<span class=\"$class\">$_</span>"; 57 } elsif (/^\s*call\s+\d+\s+returned\s+(\d+)%.*$/) { 58 my $class = $1 > 0 ? "perfect" : "terrible"; 59 $_ = "<span class=\"$class\">$_</span>"; 60 } 61 62 print; 63} 64 65print <<EOF; 66</pre> 67</body> 68</html> 69EOF 70