V6032. It is odd that the body of 'Foo_1' function is fully equivalent to the body of 'Foo_2' function.
The analyzer outputs this warning when it detects that two functions are implemented in the same way. The presence of two identical functions in code is not an error in itself, but such code should be inspected.
This diagnostic is meant for detecting the following type of bugs:
class Point
{
....
int GetX() { return mX; }
int GetY() { return mX; }
};
A typo makes two different functions do the same thing. This is the correct version of this code:
int GetX() { return mX; }
int GetY() { return mY; }
In the example above, the bodies of the functions GetX() and GetY() being alike is obviously a sign of a bug. However, there would be too many false positives if we set the analyzer to output this warning every time it encounters functions with identical bodies. That's why it relies on a number of exceptions for cases when it shouldn't output the warning. Such cases include the following:
- Functions with identical bodies use no other variables but arguments. For example: "bool IsXYZ() { return true; }";
- Functions with identical bodies are repeated more than twice;
- The functions' bodies consist of only the throw() statement;
- Etc.
You can look at examples of errors detected by the V6032 diagnostic. |