Анализатор обнаружил вызов метода, в который в качестве аргумента передаётся сам объект, у которого вызывается метод. Вероятно, данный код содержит ошибку, и в метод должен передаваться другой объект.
Рассмотрим пример:
A.Foo(A);
Здесь из-за опечатки используется неверное имя переменной. Тогда корректный код должен был быть таким:
A.Foo(B);
или таким:
B.Foo(A);
Пример кода из реального приложения:
private bool CanRenameAttributePrefix(....) { .... var nameWithoutAttribute = this.RenameSymbol.Name.GetWithoutAttributeSuffix(isCaseSensitive: true); var triggerText = GetSpanText(document, triggerSpan, cancellationToken); // nameWithoutAttribute, triggerText - String return triggerText.StartsWith(triggerText); }
Результатом возвращаемого значения в данном случае всегда будет 'true', из-за того, что метод, проверяющий, что строка начинается с подстроки, принимает в качестве аргумента саму строку ('triggerText'). Скорее всего подразумевалась следующая проверка:
return triggerText.StartsWith(nameWithoutAttribute);
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V3062. |