1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
#!perl
use 5.010001;
use strict;
use warnings;
use Perl::Critic::PolicyFactory (-test => 1);
use Perl::Critic::Statistics;
use Perl::Critic::TestUtils;
use Test::More tests => 24;
our $VERSION = '1.156';
Perl::Critic::TestUtils::assert_version( $VERSION );
Perl::Critic::TestUtils::block_perlcriticrc();
#-----------------------------------------------------------------------------
my $package = 'Perl::Critic::Statistics';
my @methods = qw(
average_sub_mccabe
lines
modules
new
statements
subs
total_violations
violations_by_policy
violations_by_severity
statements_other_than_subs
violations_per_file
violations_per_statement
violations_per_line_of_code
);
for my $method ( @methods ) {
can_ok( $package, $method );
}
#-----------------------------------------------------------------------------
my $code = <<'END_PERL';
package Foo;
use My::Module;
$this = $that if $condition;
sub foo { return @list unless $condition };
END_PERL
#-----------------------------------------------------------------------------
# Just don't get involved with Perl::Tidy.
my $profile = { '-CodeLayout::RequireTidyCode' => {} };
my $critic =
Perl::Critic->new(
-severity => 1,
-profile => $profile,
-theme => 'core',
);
my @violations = $critic->critique( \$code );
#print @violations;
#exit;
my %expected_stats = (
average_sub_mccabe => 2,
lines => 5,
modules => 1,
statements => 6,
statements_other_than_subs => 5,
subs => 1,
total_violations => 7,
violations_per_file => 7,
violations_per_line_of_code => 1.4, # 7 violations / 5 lines
violations_per_statement => 1.4, # 7 violations / 5 lines
);
my $stats = $critic->statistics();
isa_ok($stats, $package);
while ( my($method, $expected) = each %expected_stats) {
is( $stats->$method, $expected, "Statistics: $method");
}
###############################################################################
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
# fill-column: 78
# indent-tabs-mode: nil
# c-indentation-style: bsd
# End:
# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :
|