CA2022: Evitare operazioni di lettura inesattiva con Stream.Read
Proprietà | valore |
---|---|
ID regola | CA2022 |
Title | Evitare la lettura inesattiva con Stream.Read |
Categoria | Affidabilità |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | Come avviso |
Causa
Viene effettuata una chiamata a Stream.Read o Stream.ReadAsync e il valore restituito non viene controllato.
Descrizione regola
Stream.Read e Stream.ReadAsync potrebbero restituire meno byte rispetto a quelli richiesti, generando codice non affidabile se il valore restituito non è selezionato.
Come correggere le violazioni
Per correggere una violazione, controllare il valore restituito (ovvero il numero totale di byte letti nel buffer) oppure chiamare Stream.ReadExactly o Stream.ReadExactlyAsync .
Esempio
Il frammento di codice seguente mostra una violazione di CA2022 e la correzione per la violazione.
void M1(Stream stream, byte[] buffer)
{
// CA2022 violation.
stream.Read(buffer, 0, buffer.Length);
// Fix for the violation.
stream.ReadExactly(buffer);
}
Shared Sub M(stream As Stream, buffer As Byte())
' CA2022 violation.
stream.Read(buffer, 0, buffer.Length)
' Fix for the violation.
stream.ReadExactly(buffer)
End Sub
Quando eliminare gli avvisi
Non è consigliabile eliminare gli avvisi da questa regola, perché l'app potrebbe bloccarsi se non vengono risolte le violazioni.