MISRA Discussion Forums

Full Version: Rule 12.6
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Klocwork has been getting a number of complaints on our interpretation of rule 12.6. For example:

If(TRUE==TRUE) ...

So if TRUE is a Boolean. “==” is not of &&, ||, !. We report this as a violation, since the code should look like
If(TRUE) ...

Many people have debated this. Are we misunderstanding this?
This rule was clarified in technical corrigendum (TC1) and the wording is now:

Quote:The operands of logical operators (&&, || and !) should be effectively Boolean. Expressions that are effectively Boolean should not be used as operands to operators other than (&&, ||, !, =, ==, != and ?:)

According to this wording, your example:
Code:
if (TRUE==TRUE)
is not a violation of Rule 12.6.