Klocwork警告MISRA.STMT.COND.NOT_BOOLEAN并覆盖ASSERT宏

时间:2016-05-25 16:23:53

标签: c++ static-analysis klocwork

我正在开展一个大型项目,我们使用Klocwork来确保一些代码质量。 该项目使用了一些模板化的ASSERT(以及其他一些SMART_ASSERT)宏,我在使用Klocwork时会覆盖它(如下所示:https://developer.klocwork.com/documentation/en/insight/10-1/tuning-cc-analysis) Klocwork现在将我的2个ASSERT宏视为:

#define ASSERT(x) do { if (!(x)) abort(); } while (0)
#define SMART_ASSERT(sa_level,x,msg) do { if (!(x)) abort(); } while (0)

但仍然是这样的:

SMART_ASSERT(sa_warning,true,"Msg on wrong interface:discarded");
SMART_ASSERT(sa_warning,m_FactoriesTables[msgType][msgId] != 0,"No Factory for Rx Msg");
SMART_ASSERT(sa_debug,(crError != 0),"CtlPath No ErrCr Available");
SMART_ASSERT(sa_debug,(m_pools[poolId] != 0),"Pool Not Created");

MISRA.STMT.COND.NOT_BOOLEAN警告结束:

"Condition of if or loop statement has type '0' instead of 'boolean' "

有关如何纠正此警告的任何想法?

由于

SOKS

0 个答案:

没有答案