← Index
NYTProf Performance Profile   « line view »
For /Users/timbo/perl5/perlbrew/perls/perl-5.18.2/bin/perlcritic
  Run on Sat Mar 19 22:12:22 2016
Reported on Sat Mar 19 22:14:13 2016

Filename/Users/timbo/perl5/perlbrew/perls/perl-5.18.2/lib/site_perl/5.18.2/Perl/Critic/Policy/BuiltinFunctions/ProhibitReverseSortBlock.pm
StatementsExecuted 18 statements in 391µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11148µs69µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::BEGIN@13Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@13
11116µs16µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::BEGIN@10Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@10
1118µs22µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::BEGIN@12Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@12
1118µs398µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::BEGIN@15Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@15
1117µs63µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::BEGIN@16Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@16
1117µs28µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::BEGIN@11Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@11
1116µs8µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::default_severityPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::default_severity
1112µs2µsPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::supported_parametersPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::supported_parameters
0000s0sPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::applies_toPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::applies_to
0000s0sPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::default_themesPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::default_themes
0000s0sPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::::violatesPerl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::violates
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1##############################################################################
2# $URL$
3# $Date$
4# $Author$
5# $Revision$
6##############################################################################
7
8package Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock;
9
10239µs116µs
# spent 16µs within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@10 which was called: # once (16µs+0s) by Module::Pluggable::Object::_require at line 10
use 5.006001;
11221µs250µs
# spent 28µs (7+21) within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@11 which was called: # once (7µs+21µs) by Module::Pluggable::Object::_require at line 11
use strict;
# spent 28µs making 1 call to Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@11 # spent 21µs making 1 call to strict::import
12220µs236µs
# spent 22µs (8+14) within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@12 which was called: # once (8µs+14µs) by Module::Pluggable::Object::_require at line 12
use warnings;
# spent 22µs making 1 call to Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@12 # spent 14µs making 1 call to warnings::import
13228µs291µs
# spent 69µs (48+21) within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@13 which was called: # once (48µs+21µs) by Module::Pluggable::Object::_require at line 13
use Readonly;
# spent 69µs making 1 call to Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@13 # spent 21µs making 1 call to Exporter::import
14
15225µs2790µs
# spent 398µs (8+391) within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@15 which was called: # once (8µs+391µs) by Module::Pluggable::Object::_require at line 15
use Perl::Critic::Utils qw{ :severities :classification };
# spent 398µs making 1 call to Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@15 # spent 391µs making 1 call to Exporter::import
162245µs2118µs
# spent 63µs (7+55) within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@16 which was called: # once (7µs+55µs) by Module::Pluggable::Object::_require at line 16
use base 'Perl::Critic::Policy';
# spent 63µs making 1 call to Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@16 # spent 55µs making 1 call to base::import
17
181600nsour $VERSION = '1.121';
19
20#-----------------------------------------------------------------------------
21
2212µs129µsReadonly::Scalar my $DESC => q{Forbid $b before $a in sort blocks}; ## no critic (InterpolationOfMetachars)
# spent 29µs making 1 call to Readonly::Scalar
2312µs143µsReadonly::Scalar my $EXPL => [ 152 ];
# spent 43µs making 1 call to Readonly::Scalar
24
25#-----------------------------------------------------------------------------
26
2714µs
# spent 2µs within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::supported_parameters which was called: # once (2µs+0s) by Perl::Critic::Policy::new at line 88 of Perl/Critic/Policy.pm
sub supported_parameters { return () }
2812µs
# spent 8µs (6+1) within Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::default_severity which was called: # once (6µs+1µs) by Perl::Critic::Policy::get_severity at line 331 of Perl/Critic/Policy.pm
sub default_severity { return $SEVERITY_LOWEST }
29sub default_themes { return qw(core pbp cosmetic) }
30sub applies_to { return 'PPI::Token::Word' }
31
32#-----------------------------------------------------------------------------
33
34sub violates {
35 my ($self, $elem, $doc) = @_;
36
37 return if $elem ne 'sort';
38 return if ! is_function_call($elem);
39
40 my $sib = $elem->snext_sibling();
41 return if !$sib;
42
43 my $arg = $sib;
44 if ( $arg->isa('PPI::Structure::List') ) {
45 $arg = $arg->schild(0);
46 # Forward looking: PPI might change in v1.200 so schild(0) is a PPI::Statement::Expression
47 if ( $arg && $arg->isa('PPI::Statement::Expression') ) {
48 $arg = $arg->schild(0);
49 }
50 }
51 return if !$arg || !$arg->isa('PPI::Structure::Block');
52
53 # If we get here, we found a sort with a block as the first arg
54
55 # Look at each statement in the block separately.
56 # $a is +1, $b is -1, sum should always be >= 0.
57 # This may go badly if there are conditionals or loops or other
58 # sub-statements...
59 for my $statement ($arg->children) {
60 my @sort_vars = $statement =~ m/\$([ab])\b/gxms;
61 my $count = 0;
62 for my $sort_var (@sort_vars) {
63 if ($sort_var eq 'a') {
64 $count++;
65 } else {
66 $count--;
67 if ($count < 0) {
68 # Found too many C<$b>s too early
69 return $self->violation( $DESC, $EXPL, $elem );
70 }
71 }
72 }
73 }
74 return; #ok
75}
76
7713µs1;
78
79#-----------------------------------------------------------------------------
80
81__END__