gpt4 book ai didi

perl - Moose 和 MooseX::Declare 的有用错误

转载 作者:行者123 更新时间:2023-12-04 07:44:01 26 4
gpt4 key购买 nike

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 相关的类放入 %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/;
}

关于perl - Moose 和 MooseX::Declare 的有用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com