| File: | lib/Code/Statistics.pm |
| Coverage: | 100.0% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | 2 2 2 | 0 0 0 | use strict; | ||||
| 2 | 2 2 2 | 0 0 0 | use warnings; | ||||
| 3 | |||||||
| 4 | package Code::Statistics; | ||||||
| 5 | |||||||
| 6 | # ABSTRACT: collects and reports statistics on perl code | ||||||
| 7 | |||||||
| 8 - 19 | =head1 SYNOPSIS
On a terminal:
# collect statistics on the current directory and sub-directories,
# then store results in codestat.out as json
codestat collect
# compile a report from codestat.out and print to the terminal
codestat report
=cut | ||||||
| 20 | |||||||
| 21 - 48 | =head1 DESCRIPTION This is a framework to collect various metrics on a codebase and report them in a summarized manner. It is meant to be as extensible as possible. The current collection workflows are as follow: =head2 Collection All files in the search path are collected. Target constructs as defined by modules living under Code::Statistics::Target:: are collected for all files. Metrics as defined by modules living under Code::Statistics::Metric:: are collected for all targets. All data is dumped as json to C<codestat.out>. =head2 Reporting Data from the local C<codestat.out> is read. Data is grouped by target and for each target type the following is printed: Averages of all non-location metrics. Tables with the top ten and bottom ten for each significant metric. =cut | ||||||
| 49 | |||||||
| 50 | 2 2 2 | 0 0 0 | use Code::Statistics::Config; | ||||
| 51 | 2 2 2 | 0 0 0 | use Code::Statistics::Collector; | ||||
| 52 | 2 2 2 | 0 0 0 | use Code::Statistics::Reporter; | ||||
| 53 | |||||||
| 54 | 2 2 2 | 0 0 0 | use Moose; | ||||
| 55 | 2 2 2 | 0 0 0 | use MooseX::HasDefaults::RO; | ||||
| 56 | 2 2 2 | 0 0 0 | use Code::Statistics::SlurpyConstructor; | ||||
| 57 | |||||||
| 58 | has config_args => ( | ||||||
| 59 | is => 'ro', | ||||||
| 60 | slurpy => 1, | ||||||
| 61 | ); | ||||||
| 62 | |||||||
| 63 | sub _command_config { | ||||||
| 64 | 6 | 0 | my ( $self ) = @_; | ||||
| 65 | 6 6 | 0 0 | my $config = Code::Statistics::Config->new( %{ $self->config_args } )->assemble; | ||||
| 66 | 6 | 0 | return $config; | ||||
| 67 | } | ||||||
| 68 | |||||||
| 69 - 75 | =head1 SUBROUTINES/METHODS This module acts mostly as a dispatcher and collects configuration data, then forwards it to actual action modules. These are the methods it currently provides. =cut | ||||||
| 76 | |||||||
| 77 - 81 | =head2 collect
Dispatches configuration to the statistics collector module.
=cut | ||||||
| 82 | |||||||
| 83 | sub collect { | ||||||
| 84 | 4 | 0 | my ( $self ) = @_; | ||||
| 85 | 4 | 0 | return Code::Statistics::Collector->new( $self->_command_config )->collect; | ||||
| 86 | } | ||||||
| 87 | |||||||
| 88 - 92 | =head2 report
Dispatches configuration to the statistics reporter module.
=cut | ||||||
| 93 | |||||||
| 94 | sub report { | ||||||
| 95 | 2 | 0 | my ( $self ) = @_; | ||||
| 96 | 2 | 0 | return Code::Statistics::Reporter->new( $self->_command_config )->report; | ||||
| 97 | } | ||||||
| 98 | |||||||
| 99 - 103 | =head1 SEE ALSO PPI::Tester =cut | ||||||
| 104 | |||||||
| 105 | 1; | ||||||