File Coverage: lib/Code/Statistics/Metric.pm

# File Coverage

File: | lib/Code/Statistics/Metric.pm
Coverage: | 82.9%

line | stmt | bran | cond | sub | pod | time | code
--- | --- | --- | --- | --- | --- | --- | ---
1 | 2 2 2 |  |  | 2 |  | 0 0 0 | use strict;
2 | 2 2 2 |  |  | 2 |  | 0 0 0 | use warnings;
3 |
4 |  |  |  |  |  |  | package Code::Statistics::Metric;
5 |
6 |  |  |  |  |  |  | # ABSTRACT: base class for Code::Statistic metrics
7 |
8 | 2 2 2 |  |  | 2 |  | 0 0 0 | use 5.004;
9 |
10 | 2 2 2 |  |  | 2 |  | 0 0 0 | use Module::Pluggable search_path => __PACKAGE__, require => 1, sub_name => 'all';
11 |
12 - 18 |  |
    =head2 measure
        Returns the metric of the given target.
        Is called with the metric class name and a target object of unspecified
        type.
        This function should be overridden with specific logic to actually retrieve
        the metric data.
    =cut
19 |
20 |  |  |  |  |  |  | sub measure {
21 | 0 |  |  | 0 |  | 0 | my ( $class, $target ) = @_;
22 | 0 |  |  |  |  | 0 | return;
23 |  |  |  |  |  |  | }
24 |
25 - 30 |  |
    =head2 incompatible_with
        Returns true if the given target is explicitly not supported by this metric.
        Is called with the metric class name and a string representing the target
        identifiers after 'Code::Statistics::Target::'.
        Default is that all metrics are compatible with all targets.
    =cut
31 |
32 |  |  |  |  |  |  | sub incompatible_with {
33 | 240 |  |  | 240 |  | 0 | my ( $class, $target ) = @_;
34 | 240 |  |  |  |  | 0 | return 0;
35 |  |  |  |  |  |  | }
36 |
37 - 45 |  |
    =head2 supports
        Returns true if the given target is supported by this metric.
        Is called with the metric class name and a string representing the target
        identifiers after 'Code::Statistics::Target::'.
        Default is that all metrics are compatible with all targets.

        Has higher precedence than 'incompatible_with' and should be used to
        incompatibilities set by other targets.
    =cut
46 |
47 |  |  |  |  |  |  | sub supports {
48 | 240 |  |  | 240 |  | 0 | my ( $class, $target ) = @_;
49 | 240 |  |  |  |  | 0 | return 0;
50 |  |  |  |  |  |  | }
51 |
52 - 57 |  |
    =head2 column_name
        Allows a metric to return a column name, which can be used by shell report
        builders for example.
        Default is the class name, with 'Code::Statistics::Metric::' stripped out.
        Override to customize.
    =cut
58 |
59 |  |  |  |  |  |  | sub column_name {
60 | 108 |  |  | 108 |  | 0 | my ( $class ) = @_;
61 | 108 |  |  |  |  | 0 | $class =~ s/Code::Statistics::Metric:://;
62 | 108 |  |  |  |  | 0 | return $class;
63 |  |  |  |  |  |  | }
64 |
65 - 67 |  |
    =head2 is_type
        Returns a Moose type as in Moose::Manual::Types. Default is 'Num'.
    =cut
68 |
69 |  |  |  |  |  |  | sub is_type {
70 | 0 |  |  | 0 |  | 0 | my ( $class ) = @_;
71 | 0 |  |  |  |  | 0 | return 'Num';
72 |  |  |  |  |  |  | }
73 |
74 - 76 |  |
    =head2 is_significant
        Returns true if the metric is considered statistically significant.
    =cut
77 |
78 |  |  |  |  |  |  | sub is_significant {
79 | 18 |  |  | 18 |  | 0 | my ( $class ) = @_;
80 | 18 |  |  |  |  | 0 | return 1;
81 |  |  |  |  |  |  | }
82 |
83 |  |  |  |  |  |  | 1;