File Coverage

blib/lib/DMOSS/Report.pm
Criterion Covered Total %
statement 11 51 21.5
branch 2 20 10.0
condition n/a
subroutine 3 13 23.0
pod 0 11 0.0
total 16 95 16.8


line stmt bran cond sub pod time code
1             package DMOSS::Report;
2             # ABSTRACT: DMOSS base class for creating reports
3             $DMOSS::Report::VERSION = '0.01_2';
4 2     2   26507 use strict;
  2         6  
  2         79  
5 2     2   11 use warnings;
  2         5  
  2         2309  
6              
7             my @types = ();
8              
9             sub new {
10 1     1 0 701 my ($class, $dmoss) = @_;
11 1         3 my $self = bless({}, $class);
12              
13 1 50       6 $self->dmoss($dmoss) if $dmoss;
14 1 50       5 $self->output($self->report) if $dmoss;
15              
16 1         3 return $self;
17             }
18              
19             sub dmoss {
20 0     0 0   my ($self, $dmoss) = @_;
21 0 0         $self->{dmoss} = $dmoss if $dmoss;
22              
23 0           return $self->{dmoss};
24             }
25              
26             sub output {
27 0     0 0   my ($self, $output) = @_;
28 0 0         $self->{output} = $output if $output;
29              
30 0           return $self->{output};
31             }
32              
33             sub report {
34 0     0 0   my ($self) = (@_);
35 0           my $output = '';
36              
37             # begin report
38 0           $output .= $self->start_report;
39              
40             # include plugins reports
41 0           foreach my $p (sort @{ $self->dmoss->{plugins} }) {
  0            
42 0           my $plugin;
43              
44             # include title, and grade
45 0           my $grade = $self->grade( $self->dmoss->plugin_grade($p) );
46 0           $plugin .= $self->make_title($p, $grade);
47              
48             # include a row for every attribute
49 0           my @reports = $self->dmoss->report_attrs_plugin($self, $p);
50             #use Data::Dumper; print STDERR Dumper(@reports);
51 0           my @results;
52 0           foreach (@reports) {
53 0 0         if (ref $_ eq 'ARRAY') {
54 0 0         push @results, $self->make_row(@$_) if (scalar(@$_) > 0);
55             }
56             else {
57 0           push @results, $_;
58             }
59             }
60 0           $plugin .= $self->make_more_info($p, @results);
61              
62 0           $output .= $self->make_plugin_box($plugin, $grade);
63             }
64              
65             # end report
66 0           $output .= $self->end_report;
67              
68 0           return $output;
69             }
70              
71             sub make_title {
72 0     0 0   my ($self, $plugin, $grade) = (@_);
73              
74 0           return "$plugin == $grade\n";
75             }
76              
77             sub make_plugin_box {
78 0     0 0   my ($self, $content) = (@_);
79              
80 0           return(('-'x60)."+\n$content\n");
81             }
82              
83             sub make_more_info {
84 0     0 0   my ($self, $plugin, @results) = (@_);
85              
86 0           return(join("\n", @results));
87             }
88              
89             sub make_row {
90 0     0 0   my ($self, @values) = (@_);
91              
92 0           return join("\t\t", @values);
93             }
94              
95             sub grade {
96 0     0 0   my ($self, $num) = (@_);
97            
98 0 0         return 'F' if $num < 0.1;
99 0 0         return 'D' if $num < 0.4;
100 0 0         return 'C' if $num < 0.6;
101 0 0         return 'B' if $num < 0.8;
102 0           return 'A';
103             }
104              
105 0     0 0   sub start_report { "\nDMOSS Report\n" }
106              
107 0     0 0   sub end_report { "\n" }
108              
109             1;
110              
111             __END__