我正在做一个大型项目,我们使用 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' "
关于如何纠正此警告的任何想法?
谢谢
索克斯