123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- require 5.6.1;
- use strict;
- use warnings;
- use Devel::Cover::DB;
- use Config;
- use File::Spec;
- use File::Find ();
- use File::Path;
- use Getopt::Long;
- my $Options =
- {
- add_uncoverable_point => [],
- annotation => [],
- coverage => [],
- delete => undef,
- gcov => $Config{gccversion},
- ignore => [],
- ignore_re => [],
- launch => 0,
- make => $Config{make},
- report => "",
- report_c0 => 75,
- report_c1 => 90,
- report_c2 => 100,
- select => [],
- select_re => [],
- summary => 1,
- uncoverable_file => [".uncoverable", glob("~/.uncoverable")],
- };
- sub main
- {
- my $dbname = File::Spec->rel2abs("cover_db");
- die "Can't open database $dbname\n"
- if !-d $dbname;
- $Options->{outputdir} = File::Spec->rel2abs($dbname);
- mkpath($Options->{outputdir}) unless -d $Options->{outputdir};
- my $db = Devel::Cover::DB->new
- (
- db => $dbname,
- uncoverable_file => $Options->{uncoverable_file},
- );
- $db = $db->merge_runs;
- $db->add_uncoverable($Options->{add_uncoverable_point});
- $db->delete_uncoverable($Options->{delete_uncoverable_point});
- $db->clean_uncoverable
- if $Options->{clean_uncoverable_points};
- $db->calculate_summary(map { $_ => 1 } @{$Options->{coverage}});
- my $lines = "";
-
-
- for my $file (sort keys %{$db->{summary}})
- {
- my $line = "$file;";
- my $numbers = "";
- for my $n (sort keys %{$db->cover->{$file}->{statement}})
- {
- my $hits = $db->cover->{$file}->{statement}->{$n}->[0]->[0];
- my $errs = $db->cover->{$file}->{statement}->{$n}->[0]->[1];
-
- if ($hits > 0 && length($errs // '') == 0)
- {
- $numbers .= $n . ",";
- }
- }
-
- chop($numbers);
- $line .= $numbers . ";";
-
- $numbers = "";
- for my $n (sort keys %{$db->cover->{$file}->{statement}})
- {
- my $hits = $db->cover->{$file}->{statement}->{$n}->[0]->[0];
- my $errs = $db->cover->{$file}->{statement}->{$n}->[0]->[1];
- if ($hits > 0 && length($errs // '') > 0)
- {
- $numbers .= $n . ",";
- }
- }
- chop($numbers);
- $line .= $numbers . ";";
- $numbers = "";
- for my $n (sort keys %{$db->cover->{$file}->{statement}})
- {
- my $hits = $db->cover->{$file}->{statement}->{$n}->[0]->[0];
- my $errs = $db->cover->{$file}->{statement}->{$n}->[0]->[1];
- if ($hits == 0 && length($errs // '') == 0)
- {
- $numbers .= $n . ",";
- }
- }
- chop($numbers);
- $line .= $numbers . ";";
- $lines .= $line . "\n";
- print $lines;
- }
-
- open(MYFILE, ">.umbrella-coverage");
- print MYFILE $lines;
- close(MYFILE);
- }
- main
|