加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在开发过程中,如何将Perl警告推广到致命错误?

发布时间:2020-12-15 21:11:56 所属栏目:大数据 来源:网络整理
导读:运行应用程序测试套件时,我希望将所有Perl编译和运行时警告(例如“未初始化的变量”警告)提升为致命错误,以便我和其他开发人员调查并修复生成警告的代码.但我只想在开发和CI测试期间做到这一点.在生产中,警告应该保持警惕. 我尝试了以下内容:在“t / lib”
运行应用程序测试套件时,我希望将所有Perl编译和运行时警告(例如“未初始化的变量”警告)提升为致命错误,以便我和其他开发人员调查并修复生成警告的代码.但我只想在开发和CI测试期间做到这一点.在生产中,警告应该保持警惕.

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

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

然后称之为测试套件:

$PERL5LIB=$PERL5LIB:./t/lib PERL5OPT=-MTestHelper.pm prove -l t/*.t

但是,这并没有将所有警告提示为致命错误的预期效果.我的警告正常,但警告似乎并没有被视为致命的.请注意,我所有的test.t脚本都有“使用警告”在他们中 – 也许这是超过了TestHelper.pm中的一个,因为“使用警告”有一个本地范围?

相反,我做到了这一点:

# TestHelper.pm
# Promote all warnings to fatal 
$SIG{__WARN__} = sub { die @_; };
1;

这是有效的,但有一个代码的气味.我也不喜欢它在第一个警告上炸弹.我宁愿测试套件运行完整,记录所有警告,但测试状态最终失败,因为代码运行警告.

有没有更好的方法来达到这个最终结果?

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读