File Coverage

blib/lib/App/DBCritic/Policy.pm
Criterion Covered Total %
statement 24 24 100.0
branch n/a
condition n/a
subroutine 8 8 100.0
pod 1 1 100.0
total 33 33 100.0


line stmt bran cond sub pod time code
1             package App::DBCritic::Policy;
2              
3 5     5   3118 use strict;
  5         19  
  5         157  
4 5     5   36 use utf8;
  5         14  
  5         35  
5 5     5   134 use Modern::Perl '2011'; ## no critic (Modules::ProhibitUseQuotedVersion)
  5         12  
  5         42  
6              
7             our $VERSION = '0.022'; # VERSION
8 5     5   806 use English '-no_match_vars';
  5         10  
  5         64  
9 5     5   2154 use Moo::Role;
  5         10  
  5         33  
10 5     5   4740 use App::DBCritic::Violation;
  5         15  
  5         277  
11 5     5   40 use namespace::autoclean -also => qr{\A _}xms;
  5         11  
  5         46  
12              
13             requires qw(description explanation violates);
14              
15             around violates => sub {
16             my ( $orig, $self ) = splice @_, 0, 2;
17             $self->_set_element(shift);
18             $self->_set_schema(shift);
19              
20             my $details = $self->$orig(@_);
21             return $self->violation($details) if $details;
22              
23             return;
24             };
25              
26             has element => ( is => 'ro', init_arg => undef, writer => '_set_element' );
27              
28             sub violation {
29 4     4 1 11 my $self = shift;
30             return App::DBCritic::Violation->new(
31             details => shift,
32 4         13 map { $_ => $self->$_ } qw(description explanation element),
  12         76  
33             );
34             }
35              
36             has schema => ( is => 'ro', writer => '_set_schema' );
37              
38             1;
39              
40             # ABSTRACT: Role for criticizing database schemas
41              
42             __END__