我正在开展一个大型项目,我们使用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