CA2022 : Éviter une lecture inexacte avec Stream.Read
Propriété | Value |
---|---|
Identificateur de la règle | CA2022 |
Titre | Éviter une lecture inexacte avec Stream.Read |
Catégorie | Fiabilité |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | Comme avertissement |
Cause
Un appel à Stream.Read ou Stream.ReadAsync à un appel est effectué et la valeur de retour n’est pas cochée.
Description de la règle
Stream.Read et Stream.ReadAsync peut retourner moins d’octets que demandés, ce qui entraîne un code non fiable si la valeur de retour n’est pas cochée.
Comment corriger les violations
Pour corriger une violation, vérifiez la valeur de retour (c’est-à-dire le nombre total d’octets lus dans la mémoire tampon) ou appelez Stream.ReadExactly plutôt Stream.ReadExactlyAsync .
Exemple
L’extrait de code suivant montre une violation de CA2022 et le correctif de la violation.
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
Quand supprimer les avertissements
Vous ne devez pas supprimer les avertissements de cette règle, car votre application peut se bloquer si vous ne corrigez pas les violations.