PVS-Studio:即使选中分母,也会生成警告V609

时间:2017-04-27 18:51:22

标签: pvs-studio

#define b1 0x01
#define b2 0x02
#define b3 0x04
#define b1 0x08

int flag = get_flag();
int x1 = ((flag & b1) ? 1 : 0) + ((flag & b2) ? 1 : 0);
int x2 = ((flag & b3) ? 1 : 0) + ((flag & b4) ? 1 : 0);
int x = max(x1, x2);
if (x < 1)
    throw "fail";
int y = 1 / x;        // <<< V609: Divide by zero. Denominator range [0..2]
如果y,则不会评估

x < 1,但会生成V609。为什么呢?

1 个答案:

答案 0 :(得分:1)

感谢您提供代码片段。这确实是一种误报。我们将调查它出现的原因,并试图解决这个缺陷。

就目前而言,我们建议您使用false positive suppression之一或使用suppression base