Coverity 测试的 ASSERT 实现?

问题描述 投票:0回答:1

在我们的项目中,定义了ASSERT:

#define ASSERT(condition, severity)         bsp_assert(condition, severity)

然后在bsp_assert中:

void bsp_assert(uint8_t condition, uint8_t severity)
{
  if(severity == SEVERITY_HIGH)
  {
    ll_sys_assert(condition);
  }
}

当我们使用 agression High 运行 Coverity 分析时,我们收到了数千个与此断言相关的错误,如下所示:

2. var_compare_op Comparing ptr_chnl_clsfction to null implies that ptr_chnl_clsfction might be null.
       ASSERT(NULL != ptr_chnl_clsfction , SEVERITY_HIGH);

CID 442026: (#1 of 1): Dereference after null check (FORWARD_NULL)
5. var_deref_op Dereferencing null pointer ptr_chnl_clsfction.
           ptr_chnl_clsfction[byte_iter] = 0x00;

我尝试评论 bsp_assert,如下所示:

#define ASSERT(condition, severity)  /*We don't use assert*/

现在我没有更多的问题了,但我想这不是断言的目的。

我怎样才能摆脱这个问题?

谢谢。

c assert coverity
1个回答
0
投票

这就是 Coveritys 中报告

FORWARD_NULL
的方式:

在 Coverity 中,当有足够的数据时,FORWARD_NULL 会报告缺陷 确保空访问将会(可能)发生的证据。

首先,空赋值或与空比较将给出 Coverity 相信该变量可能为空的证据。

第二,取消引用该变量。

当以上2个事件发生在同一分析路径中时,则Coverity 将在第二个事件上报告 FORWARD_NULL

© www.soinside.com 2019 - 2024. All rights reserved.