MISRA Discussion Forums

Full Version: Rule 5-0-3 false positive warning
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
My static analyzer is throwing the following warning:
Quote:MCPP Rule 5-0-3: This complex expression is implicitly converted to a different essential type
for the following code:
Code:
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(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?
Your example code is compliant - contact your static analysis vendor