Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V3225. A data reading method returns...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V3225. A data reading method returns the number of bytes that were read and cannot return the value of -1.

01 Авг 2025

Анализатор обнаружил некорректную проверку возвращаемого значения метода. Некоторые методы возвращают значение, указывающее на успешность выполнения. Разработчик может ожидать, что метод вернёт -1, а на самом деле вернёт 0.

Рассмотрим пример:

public void ProcessStream(Stream s)
{
  byte[] bytes = new byte[s.Length + 10];
  int numBytesRead = 0;
  int n = s.Read(bytes, numBytesRead, 1);
    
  if (n == -1)
  {
    ....
  }

  ....
}

В данном случае проверка возвращаемого значения метода бессмысленна, поскольку метод Read, если достигнет конца потока, вернёт 0.

Исправить код можно следующим образом:

public void ProcessStream(Stream s)
{
  byte[] bytes = new byte[s.Length + 10];
  int numBytesRead = 0;
  int n = s.Read(bytes, numBytesRead, 1);
    
  if (n == 0)
  {
    ....
  }

  ....
}

Данная диагностика классифицируется как: