Devel-Cover

 view release on metacpan or  search on metacpan

bin/cover  view on Meta::CPAN

    print $s->Dump;
    exit $test_result;
  }

  if (exists $Options->{write}) {
    $dbname = $Options->{write} if length $Options->{write};
    print "Writing database to $dbname\n" unless $Options->{silent};
    $db->write($dbname);
    $read_structure->();
    $structure->write($dbname);
  }

  $db->clean;

  exit $test_result unless $Options->{summary} || @{ $Options->{report} };

  $Options->{coverage}    = [ $db->collected ] unless @{ $Options->{coverage} };
  $Options->{show}        = { map { $_ => 1 } @{ $Options->{coverage} } };
  $Options->{show}{total} = 1 if keys %{ $Options->{show} };

  $db->calculate_summary(map { $_ => 1 } @{ $Options->{coverage} });

  print "\n\n" unless $Options->{silent};

  $db
}

sub set_files {
  my ($db) = @_;
  my %f = map { $_ => 1 } (
    @{ $Options->{select} }
    ? map glob,
      @{ $Options->{select} }
    : $db->cover->items,
  );
  delete @f{ map glob, @{ $Options->{ignore} } };

  my $keep = sub {
    my ($f) = @_;
    return 0 unless exists $db->{summary}{$_};
    for (@{ $Options->{ignore_re} }) {
      return 0 if $f =~ /$_/
    }
    for (@{ $Options->{select_re} }) {
      return 1 if $f =~ /$_/
    }
    !@{ $Options->{select_re} }
  };
  @{ $Options->{file} } = sort grep $keep->($_), keys %f;
}

sub print_summary {
  my ($db) = @_;
  $db->print_summary($Options->{file}, $Options->{coverage}, { force => 1 })
    if $Options->{summary};
}

sub run_reports {
  my ($db, $argv) = @_;
  for my $report (@{ $Options->{report} }) {
    local @ARGV = @$argv;  # restore locally processed args for each report
    my $options = dclone($Options);
    my $format  = "Devel::Cover::Report::\u$report";
    $format->get_options($options) if $format->can("get_options");
    $format->report($db, $options);

    if ($options->{launch}) {
      if ($format->can("launch")) {
        $format->launch($options);
      } else {
        print STDERR "The launch option is not available for the ",
          "$report report.\n"
      }
    }
  }
}

sub main {
  $|++;  # try to impose order on STDOUT and STDERR

  check_self_coverage;
  my $argv   = check_options;
  my $dbname = get_dbname;
  check_outputdir;
  my $test_result = do_test($dbname);
  do_gcov($dbname);
  my $db = manage_dbs($dbname, $test_result);
  set_files($db);
  print_summary($db);
  run_reports($db, $argv);

  exit $test_result;
}

main

__END__

=head1 NAME

cover - report coverage statistics

=head1 VERSION

version 1.52

=head1 SYNOPSIS

 cover -test

 cover -report html_basic

=head1 DESCRIPTION

Report coverage statistics in a variety of formats.

The summary option produces a short textual summary.  Other reports are
available by using the report option.

The following reports are currently available:



( run in 1.258 second using v1.01-cache-2.11-cpan-d80b1682f3f )