Анализатор обнаружил вызов метода, в который в качестве аргумента передаётся сам объект, у которого вызывается метод. Вероятно, данный код содержит ошибку, и в метод должен передаваться другой объект.
Рассмотрим пример:
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. |