【发布时间】:2011-09-04 12:03:28
【问题描述】:
Moose 非常可爱,但有时简单的拼写错误会导致令人毛骨悚然的长堆栈跟踪,在我看来,有用的内容为零。
那么,是否有任何工具可以将这种爆炸式解释为有用的东西?
特别是对于使用普通 Moose、Moose+MooseX::Method::Signatures 和 MooseX::Declare 的类。
这些工具只需要在开发过程中提供帮助,以捕捉那些使事情无法正常工作的错字或思考问题。
===========================
根据下面的建议,我正在使用这个 not-quite-a-module-yet,这可以稍微减轻我的头痛,但欢迎提供更多想法:
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;
【问题讨论】:
-
请注意,Moose 团队还依赖社区对可能被捕获的错误的反馈。堆栈跟踪通常比所需的信息多得多,但它确保它通常不会太少。更好的错误消息通常是受欢迎的功能请求。
-
@phaylon 你可能是对的,但我宁愿我的软件是为用户设计的,而不是为作者设计的。
-
我现在发现了同样的问题 - 似乎这主要处于开发的“观望”阶段:stackoverflow.com/questions/4341116/…