# Copyright 2004-2018, Paul Johnson (paul@pjcj.net) # This software is free. It is licensed under the same terms as Perl itself. # The latest version of this software should be available from my homepage: # http://www.pjcj.net package Devel::Cover::Report::Sort; use strict; use warnings; our $VERSION = '1.31'; # VERSION use Devel::Cover::DB; sub print_sort { my ($db, $options) = @_; my %runs; my @collected = grep $_ ne "time", @{$options->{coverage}}; # use Devel::Cover::Dumper; print Dumper [$db->runs]; for my $r (sort {$a->{start} <=> $b->{start}} $db->runs) { print "Run: ", $r->run, "\n"; print "Perl version: ", $r->perl, "\n"; print "OS: ", $r->OS, "\n"; print "Start: ", scalar gmtime $r->start / 1e6, "\n"; print "Finish: ", scalar gmtime $r->finish / 1e6, "\n"; # use Devel::Cover::Dumper; print Dumper $r; @{$runs{$r->run}}{"vec", "size"} = ("", 0); my $run = $runs{$r->run}; # use Devel::Cover::Dumper; print Dumper $run; my $vec = $r->vec; for my $file (@{$options->{file}}) { # print "$file\n"; for my $criterion (@collected) { my ($v, $sz) = @{$vec->{$file}{$criterion}}{"vec", "size"}; $sz |= 0; printf "$file:%10s %5d: ", $criterion, $sz; unless($sz) { print "\n"; next; } for (0 .. $sz - 1) { print vec $v, $_, 1; vec($run->{vec}, $run->{size}++, 1) = vec $v, $_, 1; } print "\n"; } } $run->{count} += vec $run->{vec}, $_, 1 for 0 .. $run->{size} - 1; print "Vec: "; print vec $run->{vec}, $_, 1 for 0 .. $run->{size} - 1; print "\n"; print "Count: $run->{count} / $run->{size}\n\n"; } } sub report { my ($pkg, $db, $options) = @_; print_sort($db, $options); } 1 __END__ =head1 NAME Devel::Cover::Report::Sort - backend for Devel::Cover =head1 VERSION version 1.31 =head1 SYNOPSIS cover -report sort =head1 DESCRIPTION This module reports coverage runs in an optimal order. It is designed to be called from the C program. =head1 SEE ALSO Devel::Cover =head1 BUGS Huh? =head1 LICENCE Copyright 2004-2018, Paul Johnson (paul@pjcj.net) This software is free. It is licensed under the same terms as Perl itself. The latest version of this software should be available from my homepage: http://www.pjcj.net =cut