CA2012: ValueTasks를 올바르게 사용
속성 | 값 |
---|---|
규칙 ID | CA2012 |
제목 | ValueTasks를 올바르게 사용하세요. |
범주 | 신뢰성 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 제안 사항 |
원인
멤버 호출에서 반환되는 ValueTask 인스턴스가 예외, 손상 또는 성능 저하를 발생시킬 수 있는 방식으로 사용됩니다.
규칙 설명
멤버 호출에서 반환되는 ValueTask 인스턴스는 직접 대기되도록 되어 있습니다. ValueTask를 여러 번 사용하거나 완료가 확인되기 전에 해당 결과에 직접 액세스하면 예외나 손상이 발생할 수 있습니다. 이러한 ValueTask를 무시하면 기능 버그가 발생하거나 성능이 저하될 수 있습니다.
위반 문제를 해결하는 방법
일반적으로 ValueTasks는 지역 변수나 필드와 같은 다른 위치에 저장되거나 삭제되지 않고 직접 대기되어야 합니다.
경고를 표시하지 않는 경우
임의의 멤버 호출에서 반환된 개체의 경우 ValueTask
호출자는 한 번만 사용해야 한다고 가정 ValueTask
해야 합니다(예: 대기). 그러나 개발자가 호출되는 멤버를 제어하고 해당 구현에 대한 완전한 지식을 가지고 있는 경우 개발자는 반환 ValueTask
이 항상 개체를 래핑 Task 하는 경우 경고가 표시되지 않도록 하는 것이 안전하다는 것을 알 수 있습니다.
경고 표시 안 함
단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.
#pragma warning disable CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012
파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none
으로 설정합니다.
[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none
자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.
참고 항목
.NET