在我们的项目中,定义了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*/
现在我没有更多的问题了,但我想这不是断言的目的。
我怎样才能摆脱这个问题?
谢谢。
这就是 Coveritys 中报告
FORWARD_NULL
的方式:
在 Coverity 中,当有足够的数据时,FORWARD_NULL 会报告缺陷 确保空访问将会(可能)发生的证据。
首先,空赋值或与空比较将给出 Coverity 相信该变量可能为空的证据。
第二,取消引用该变量。
当以上2个事件发生在同一分析路径中时,则Coverity 将在第二个事件上报告 FORWARD_NULL