0

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

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

谢谢

索克斯

4

0 回答 0