【问题标题】:PVS-Studio: warning V609 is generated even if denominator is checkedPVS-Studio:即使检查了分母,也会生成警告 V609
【发布时间】:2017-09-25 17:20:39
【问题描述】:
#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]

如果x &lt; 1,则不会评估y,但会生成V609。为什么?

【问题讨论】:

    标签: pvs-studio


    【解决方案1】:

    感谢您提供代码片段。这确实是一个误报。我们会调查它出现的原因,并会尝试修复这个缺陷。

    目前,我们建议使用false positive suppression的方式之一或使用suppression base

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 2017-09-25
      • 2012-02-18
      • 2021-11-08
      • 2018-11-13
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2013-07-16
      相关资源
      最近更新 更多