gpt4 book ai didi

perl - 在开发过程中,我应该如何将 Perl 警告升级为 fatal error ?

转载 作者:行者123 更新时间:2023-12-03 22:53:01 25 4
gpt4 key购买 nike

在运行应用程序测试套件时,我想将所有 Perl 编译和运行时警告(例如“未初始化变量”警告)提升为 fatal error ,以便我和其他开发人员调查并修复生成警告的代码。但我只想在开发和 CI 测试期间这样做。在生产中,警告应该只是作为警告。

我尝试了以下方法: 在“t/lib”中,我创建了一个模块 TestHelper.pm:

# TestHelper.pm
use warnings FATAL => qw( all );
1;

然后像这样调用测试套件:
$ PERL5LIB=$PERL5LIB:./t/lib PERL5OPT=-MTestHelper.pm prove -l t/*.t

但这并没有将所有警告提升为 fatal error 的预期效果。我收到了正常的警告,但警告似乎没有被视为致命。请注意,我所有的 test.t 脚本都有“使用警告;”这一行。在它们中-也许这会覆盖 TestHelper.pm 中的那个,因为“使用警告”具有本地范围?

相反,我这样做了:
# TestHelper.pm
# Promote all warnings to fatal
$SIG{__WARN__} = sub { die @_; };
1;

这可行,但有一种代码味道。我也不喜欢它在第一次警告时就爆炸了。我宁愿测试套件完整运行,记录所有警告,但测试状态最终失败,因为代码运行时出现警告。

有没有更好的方法来实现这个最终结果?

最佳答案

我想你正在寻找 Test::NoWarnings .

关于perl - 在开发过程中,我应该如何将 Perl 警告升级为 fatal error ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353179/

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