다음을 통해 공유


CA2022: Stream.Read를 사용할 때 부정확한 읽기를 피하십시오.

속성
규칙 ID CA2022
제목 Stream.Read를 사용할 때 부정확한 읽기를 피하세요.
범주 신뢰성
수정 사항이 호환성을 깨뜨리는지 여부 또는 무중단인지 여부 주요 변경 아님
.NET 10에서 기본적으로 사용하도록 설정 경고로서
적용 가능한 언어 C# 및 Visual Basic

원인

Stream.Read 또는 Stream.ReadAsync 호출 시 반환 값이 확인되지 않습니다.

규칙 설명

Stream.Read 요청된 것보다 적은 바이트를 반환할 수 있으며 Stream.ReadAsync 반환 값이 확인되지 않으면 신뢰할 수 없는 코드가 생성됩니다.

위반 문제를 해결하는 방법

위반 문제를 해결하려면 반환 값(버퍼에 읽은 총 바이트 수)을 확인하거나 Stream.ReadExactly 또는 Stream.ReadExactlyAsync을(를) 대신 호출하세요.

예시

다음 코드 조각은 CA2022 위반 및 위반에 대한 수정 사항을 보여줍니다.

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

경고를 표시하지 않는 경우

위반을 수정하지 않으면 앱이 중단될 수 있으므로 이 규칙의 경고를 표시하지 않아야 합니다.

참고하기