MISRA Discussion Forums
Rule 5-0-3 false positive warning - Printable Version

+- MISRA Discussion Forums (https://forum.misra.org.uk)
+-- Forum: MISRA C++ (https://forum.misra.org.uk/forumdisplay.php?fid=18)
+--- Forum: MISRA C++:2008 rules (https://forum.misra.org.uk/forumdisplay.php?fid=19)
+---- Forum: 6.5 Expressions (C++) (https://forum.misra.org.uk/forumdisplay.php?fid=134)
+---- Thread: Rule 5-0-3 false positive warning (/showthread.php?tid=1331)



Rule 5-0-3 false positive warning - mikearmagedon - 04-04-2017

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?


Re: Rule 5-0-3 false positive warning - misra cpp - 10-07-2017

Your example code is compliant - contact your static analysis vendor