Module-CPANTS-Analyse

 view release on metacpan or  search on metacpan

lib/Module/CPANTS/Kwalitee/Uses.pm  view on Meta::CPAN

package Module::CPANTS::Kwalitee::Uses;
use warnings;
use strict;
use File::Spec::Functions qw(catfile);
use Perl::PrereqScanner::NotQuiteLite 0.9901;
use List::Util 1.33 qw/none/;
use version;

our $VERSION = '1.02';
$VERSION =~ s/_//; ## no critic

# These equivalents should be reasonably well-known and, preferably,
# well-documented. Don't add obscure modules used by only one person
# or a few people, to keep the list relatively small and to encourage
# people to use a better equivalent.
# "use_(strict|warnings)" should fail if someone feels the need
# to add "use $1;" in the modules.
our @STRICT_EQUIV = qw( strict );
our @WARNINGS_EQUIV = qw( warnings warnings::compat );
our @STRICT_WARNINGS_EQUIV = qw(
  common::sense
  Any::Moose
  Catmandu::Sane Coat
  Dancer
  Mo Mu
  Modern::Perl
  Moo Moo::Role
  Moose Moose::Role Moose::Exporter
  Moose::Util::TypeConstraints Moose::Util::MetaRole
  MooseX::Declare MooseX::Role::Parameterized MooseX::Types
  Mouse Mouse::Role
  Object::Pad
  perl5 perl5i::1 perl5i::2 perl5i::latest
  Pegex::Base
  Role::Tiny
  strictures
);
# These modules require a flag to enforce strictness.
push @STRICT_WARNINGS_EQUIV, qw(
  Mojo::Base
  Spiffy
);

sub order { 100 }

##################################################################
# Analyse
##################################################################

sub analyse {
    my $class = shift;
    my $me = shift;
    
    my $distdir = $me->distdir;
    my $modules = $me->d->{modules};
    my $files = $me->d->{files_hash};

    # NOTE: all files in xt/ should be ignored because they are
    # for authors only and their dependencies may not be (and
    # often are not) listed in meta files.
    my @test_files = grep {m!^t\b.*\.t$!} sort keys %$files;
    $me->d->{test_files} = \@test_files;

    my %test_modules = map {
        my $m = my $f = $_;
        $m =~ s|\.pm$||;
        $m =~ s|/|::|g;
        (my $m0 = $m) =~ s|^t::(?:lib::)?||;
        ($m => $f, $m0 => $f)
    } grep {m|^t\b.*\.pm$|} keys %$files;

    my %skip=map {$_->{module}=>1 } @$modules;

    # d->{versions} (from SiteKwalitee) knows inner packages as well
    if (my $versions = $me->d->{versions}) {
        for my $file (keys %$versions) {
            for my $module (keys %{$versions->{$file}}) {
                $skip{$module} = 1;
            }
        }
    }

    my %uses;

    my $scanner = Perl::PrereqScanner::NotQuiteLite->new(
        parsers => [':bundled'],



( run in 0.642 second using v1.01-cache-2.11-cpan-39bf76dae61 )