V2528. MISRA. The comma operator should not be used.


This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).

Avoid using the 'comma' operator as it may be confusing to code maintainers. Consider the following example:

int foo(int x, int y) { .... }
foo( ( 0, 3), 12 );

This code could be confusing to a programmer who is not familiar with the function's signature. They could think that the function is called with three arguments, but it is not so: the 'comma' operator in the '(0, 3)' expression will evaluate the left and right arguments and return the latter. As a result, the function call will actually look like this:

foo( 3, 12 );

This warning is issued in other cases as well, for example:

int myMemCmp(const char *s1, const char *s2, size_t N)
{
  for (; N > 0; ++s1, ++s2, --N) { .... }
}


Bugs Found

Checked Projects
363
Collected Errors
13 495