gpt4 book ai didi

perl - 如何使用 Devel::Cover 标记可发现的 `//` 条件?

转载 作者:行者123 更新时间:2023-12-04 15:58:38 30 4
gpt4 key购买 nike

我有以下逻辑:

sub test {
my ($x, $y) = @_;
die unless defined $x || defined $y;
# uncoverable condition false
return $x // $y;
}

test( 1, 2 );
test( 1, undef );
test( undef, 2 );
test( undef, undef );
return对于 $x 的情况,语句永远不会被覆盖。和 $y都是未定义的。因此,覆盖报告指出未发现的情况:
  %  | coverage    | condition
------------------------------
67 | A | B | dec | $x // $y
|-------------|
===> | 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | X | 1 |

有没有办法让我将该条件标记为 uncoverable ?添加 uncoverable condition false在线上方修复了覆盖率摘要,但当我查看详细信息时,条件覆盖率仍为 67%。

Devel::Cover 是否处理 //运算符(operator)?

另一方面,如果我更改 die线到等价物:
die "died" if !defined $x && !defined $y;

这条线也覆盖了 67%。
  %  | coverage    | condition
------------------------------
67 | A | B | dec | defined $x or defined $y
|-------------|
| 0 | 0 | 0 |
===> | 0 | 1 | 1 |
| 1 | X | 1 |

这可能是一个错误吗?

最佳答案

这是没有意义的。 //只有两条路径(定义了 $x,未定义 $x)。 $y// 无关.所以我做了一个测试

test( 1,     2     );
#test( 1, undef ); # Don't even need this one.
test( undef, 2 );
test( undef, undef );

得到了:
----------------------------------- ------ ------ ------ ------ ------ ------
File stmt bran cond sub time total
----------------------------------- ------ ------ ------ ------ ------ ------
x.pl 100.0 100.0 100.0 100.0 100.0 100.0
Total 100.0 100.0 100.0 100.0 100.0 100.0
----------------------------------- ------ ------ ------ ------ ------ ------

关于perl - 如何使用 Devel::Cover 标记可发现的 `//` 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441394/

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