【发布时间】:2023-03-12 04:53:01
【问题描述】:
过去几年,我们在旧版 Perl 代码库中采用了use strict。我的任务是把它添加到其余的模块中,同时确保它当然不会破坏任何东西。
现在对于use strict 'vars' 和use strict 'subs' 这很容易,因为这些是简单的perl -c 捕获的编译时错误。但是是否有系统的方法来检查use strict 'refs' 触发的运行时错误?
当然,我可以通过在所有可能的情况下(即完全覆盖)调用所有函数来引发运行时错误,但这很麻烦,尤其是。因为这段代码缺少单元测试。如果您有更好的想法,我将不胜感激。
【问题讨论】:
-
现在我正在查找
/[@%$]\s*[${]/的源代码,它可以找到我知道的所有取消引用语法。然后我手动检查每个事件。 -
我就是这样做的。但也要寻找
/->\s*[[{]/ -
虽然我会拒绝这项任务并说必须先进行单元测试
-
(完全覆盖是不够的。例如,您可以通过运行
$x=0;$y=0;和$x=1;$y=1;获得$r = $x ? [] : "abc"; return if !$y; push @$r, "def";的完整测试覆盖,但这不会发现$x=0;$y=1;的问题。 )
标签: perl reference use-strict