V7002. The body of a function is fully equivalent to the body of another function.
Анализатор обнаружил две функции, тела которых реализованы идентичным образом. Наличие двух одинаковых функций само по себе не является ошибкой, но это повод обратить на них внимание.
Диагностическое правило может обнаружить следующие разновидности ошибок:
class Point
{
foo;
bar;
getFoo() { return foo; }
getBar() { return foo; }
}
Из-за допущенной опечатки две разные по смыслу функции выполняют одинаковые действия.
Корректный вариант:
class Point
{
foo;
bar;
getFoo() { return foo; }
getBar() { return bar; }
}
В приведённом примере идентичность тел функций getFoo и getBar явно свидетельствует о наличии ошибки. Однако если выдавать предупреждения на все одинаковые функции, то процент ложных срабатываний будет крайне большим. Поэтому анализатор руководствуется целым рядом исключений, когда не стоит предупреждать об одинаковых телах функций.
Перечислим некоторые из них:
- из функции сразу возвращается значение, являющееся либо литералом, либо
this. Пример:isXYZ() { return true; }; - функции с одинаковыми телами повторяются более двух раз;
- тело функций состоит только из инструкции
throw.