Perl::Critic::Policy::Moose::ProhibitMultipleWiths - Require role composition
version 1.01
Moose::Roles are, among other things, the answer to name conflicts plaguing multiple inheritance and mix-ins. However, to enjoy this protection, you must compose your roles together. Roles do not generate conflicts if they are consumed individually.
Pass all of your roles to a single with statement.
# ok package Foo; use Moose::Role; with qw< Bar Baz >; # not ok package Foo; use Moose::Role; with 'Bar'; with 'Baz';
This policy is part of Perl::Critic::Moose.
There is a single option, equivalent_modules. This allows you to specify modules that should be treated the same as Moose and Moose::Role, if, say, you were doing something with Moose::Exporter. For example, if you were to have this in your .perlcriticrc file:
equivalent_modules
[Moose::ProhibitMultipleWiths] equivalent_modules = Foo Bar
then the following code would result in a violation:
package Baz; use Bar; with 'Bing'; with 'Bong';
Elliot Shank <perl@galumph.com>
Dave Rolsky <autarch@urth.org>
This software is copyright (c) 2008 - 2015 by Elliot Shank.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Perl::Critic::Moose, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Perl::Critic::Moose
CPAN shell
perl -MCPAN -e shell install Perl::Critic::Moose
For more information on module installation, please visit the detailed CPAN module installation guide.