CA2217: 열거형을 FlagsAttribute로 표시하지 마십시오.
속성 | 값 |
---|---|
규칙 ID | CA2217 |
제목 | 열거형을 FlagsAttribute로 표시하지 마세요. |
범주 | 사용 현황 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 아니요 |
원인
열거형이 FlagsAttribute로 표시되고 2의 거듭제곱 또는 열거형에 정의된 다른 값의 조합이 아닌 값을 하나 이상 갖습니다.
기본적으로 이 규칙은 외부에 표시되는 열거형만 확인하지만 이는 구성 가능합니다.
규칙 설명
열거형에 정의된 각 값이 2의 거듭제곱 또는 정의된 값의 조합인 경우에만 열거형에 FlagsAttribute가 있어야 합니다.
위반 문제를 해결하는 방법
이 규칙의 위반을 해결하려면 열거형에서 FlagsAttribute를 제거합니다.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
분석할 코드 구성
다음 옵션을 사용하여 이 규칙이 실행될 코드베이스 부분을 구성합니다.
이 규칙, 적용되는 모든 규칙 또는 적용되는 이 범주의 모든 규칙(사용)에 대해 이 옵션을 구성할 수 있습니다. 자세한 내용은 코드 품질 규칙 구성 옵션을 참조하세요.
특정 API 화면 포함
접근성을 기반으로 이 규칙을 실행할 코드베이스의 파트를 구성할 수 있습니다. 예를 들어 규칙이 퍼블릭이 아닌 API 표면에서만 실행되도록 지정하려면 프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가합니다.
dotnet_code_quality.CAXXXX.api_surface = private, internal
예제
다음 코드에서는 값 3을 포함하는 Color
열거형을 보여 줍니다. 3은 2의 거듭제곱 또는 정의된 값의 조합이 아닙니다. Color
열거형은 FlagsAttribute로 표시되어서는 안 됩니다.
// Violates this rule
[FlagsAttribute]
public enum Color
{
None = 0,
Red = 1,
Orange = 3,
Yellow = 4
}
Imports System
Namespace Samples
' Violates this rule
<FlagsAttribute()> _
Public Enum Color
None = 0
Red = 1
Orange = 3
Yellow = 4
End Enum
End Namespace
다음 코드에서는 FlagsAttribute로 표시되는 요구 사항을 충족하는 Days
열거형을 보여 줍니다.
[FlagsAttribute]
public enum Days
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
All = Monday | Tuesday | Wednesday | Thursday | Friday
}
Imports System
Namespace Samples
<FlagsAttribute()> _
Public Enum Days
None = 0
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday
End Enum
End Namespace
관련 규칙
CA1027: 열거형을 FlagsAttribute로 표시하십시오.
참고 항목
.NET