V6057. Consider inspecting this expression. The expression is excessive or contains a misprint.

The analyzer has detected a redundant comparison that could be a potential bug.

Consider the following simple example:

if (arr[42] == 10 && arr[42] != 3)

This condition will be true if 'Aa[42] == 10'. The second part of the expression is pointless. It means that one of the two scenarios takes place here:

1) The expression can be simplified. Fixed code:

if (arr[42] == 10)

2) The expression is incorrect. Fixed code:

if (arr[42] == 10 && arr[43] != 3)

Here is another example with a suspicious condition:

if ((3 < value) && (value > 10))

The condition will be true only when 'value > 10'. This will most likely mean an error, and the programmer must have actually expected 'value' to fall into the range (3;10):

if ((3 < value) && (value < 10))

The following article discusses this type of issues in detail and offers a few tips on how to avoid them: "Logical Expressions in C/C++. Mistakes Made by Professionals".

According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-571.


Bugs Found

Checked Projects
409
Collected Errors
14 072
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site. Learn More →
Accept