穆斯非常可爱,但从我的观点来看,有时简单的拼写错误可能导致令人兴奋的令人兴奋的长叠加,无用的内容。
那么,是否有任何工具可以将这种爆炸解释为有用的东西?
特别是对于使用普通Moose,Moose + MooseX :: Method :: Signatures和MooseX :: Declare的类。
这些工具只需要在开发过程中提供帮助,以捕捉那些使事情无效的错字或思考问题。
=========================
根据以下建议,我正在使用这个不太完整的模块 - 但这会减少我的头痛,但欢迎更多的想法:
package MooseX::QuietCarping;
# Not actually a Moose thing, but helpful for Moose.
# calm Moose-internal stacktraces down a little
use Carp;
my %retain = ();
sub import {
my $class = shift;
$retain{$_}++ for @_;
}
CHECK {
for (sort keys %INC) {
s{\.pm$}{};
s{[/\\]}{::}g; # CROSS PLATFORM MY ARSE
next if $retain{$_};
$Carp::Internal{$_}++ if /^(?:Class::MOP|Moose|MooseX)\b/
}
%retain = (); # don't need this no more
}
1;
答案 0 :(得分:4)
我前段时间尝试过的一种方法是将Moose相关类放入%Carp::Internal
哈希,如下所示:
$Carp::Internal{$_}++ for qw{
Class::MOP
Class::MOP::Attribute
Class::MOP::Class
...
};
这些类将在堆栈跟踪中跳过,使其更紧凑并强调您自己的代码。
您可以通过遍历%INC
变量:
package Dummy;
use Moose;
use MooseX::Declare;
# use ....;
for (sort keys %INC) {
s{\.pm$}{};
s{/}{::}g;
print "$_\n" if /^(Class::MOP|Moose|MooseX)\b/;
}
答案 1 :(得分:2)
我似乎记得在一两个星期前看到一个PerlMonks帖子说他们正在努力改进Moose错误消息。不过,我认为目前没有任何东西可用来清理它。
答案 2 :(得分:2)
Method::Signatures::Modifiers
是一个希望解决MooseX::Method::Signatures
的一些问题的软件包。只需use
就可以超载。
use MooseX::Declare;
use Method::Signatures::Modifiers;
class Foo
{
method bar (Int $thing) {
# this method is declared with Method::Signatures instead of MooseX::Method::Signatures
}
}