| #!/usr/bin/perl |
| # |
| # Copyright (C) 2006 Daniel Berrange |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| |
| |
| print <<EOF; |
| <html> |
| <head> |
| <title>Coverage report for $ARGV[0]</title> |
| <style type="text/css"> |
| span.perfect { |
| background: rgb(0,255,0); |
| } |
| span.terrible { |
| background: rgb(255,0,0); |
| } |
| </style> |
| </head> |
| <body> |
| <h1>Coverage report for $ARGV[0]</h1> |
| |
| <pre> |
| EOF |
| |
| |
| while (<>) { |
| s/&/&/g; |
| s/</</g; |
| s/>/>/g; |
| |
| if (/^\s*function (\S+) called (\d+) returned \d+% blocks executed \d+%/) { |
| my $class = $2 > 0 ? "perfect" : "terrible"; |
| $_ = "<span class=\"$class\" id=\"" . $1 . "\">$_</span>"; |
| } elsif (/^\s*branch\s+\d+\s+taken\s+(\d+)%\s+.*$/) { |
| my $class = $1 > 0 ? "perfect" : "terrible"; |
| $_ = "<span class=\"$class\">$_</span>"; |
| } elsif (/^\s*branch\s+\d+\s+never executed.*$/) { |
| my $class = "terrible"; |
| $_ = "<span class=\"$class\">$_</span>"; |
| } elsif (/^\s*call\s+\d+\s+never executed.*$/) { |
| my $class = "terrible"; |
| $_ = "<span class=\"$class\">$_</span>"; |
| } elsif (/^\s*call\s+\d+\s+returned\s+(\d+)%.*$/) { |
| my $class = $1 > 0 ? "perfect" : "terrible"; |
| $_ = "<span class=\"$class\">$_</span>"; |
| } |
| |
| print; |
| } |
| |
| print <<EOF; |
| </pre> |
| </body> |
| </html> |
| EOF |