Page 1 of 1

Rule 5-0-3 false positive warning

Posted: Tue Apr 04, 2017 3:59 pm
by mikearmagedon
My static analyzer is throwing the following warning:
MCPP Rule 5-0-3: This complex expression is implicitly converted to a different essential type
for the following code:

Code: Select all

void func(const uint32_t arg)
{
    //32U has underlying type uint8_t
    const uint32_t u32a = arg % 32U; //warning issued in this line
    const uint32_t u32b = static_cast<uint32_t>(arg % 32U); //compliant
}
I think this warning may be a false positive because, despite the 32U having a uint8_t underlying type, the expression should take the underlying type of the larger type, in this case the uint32_t, thus making the need for the static_cast unnecessary.

Do you agree this is a false positive? Or am I looking at it all wrong?

Re: Rule 5-0-3 false positive warning

Posted: Mon Jul 10, 2017 11:11 am
by misra cpp
Your example code is compliant - contact your static analysis vendor