CA1710: 식별자에는 올바른 접미사를 사용해야 합니다.

속성
규칙 ID CA1710
타이틀 식별자에는 올바른 접미사를 사용해야 합니다.
범주 이름 지정
수정 사항이 주요 변경인지 여부 주요 변경
.NET 8에서 기본적으로 사용 아니요

원인

식별자에 올바른 접미사가 없습니다.

기본적으로 이 규칙은 외부에 표시되는 식별자만 확인하지만 이는 구성 가능합니다.

규칙 설명

규칙에 따라 특정 기본 형식을 확장하거나 특정 인터페이스를 구현하는 형식이나 이러한 형식에서 파생된 형식의 이름에는 기본 형식이나 인터페이스와 연관된 접미사가 있습니다.

명명 규칙은 공용 언어 런타임을 대상으로 하는 라이브러리에 대한 일반적인 모양을 제공합니다. 따라서 새 소프트웨어 라이브러리에 필요한 학습 곡선이 축소되고 라이브러리가 관리 코드 개발 관련 전문 지식을 갖춘 누군가에 의해 개발되었다는 사실에 고객 신뢰도가 향상됩니다.

다음 표에서는 관련 접미사가 있는 기본 형식 및 인터페이스를 보여 줍니다.

기본 형식/인터페이스 접미사
System.Attribute Attribute
System.EventArgs Eventargs
System.Exception 예외
System.Collections.ICollection 컬렉션
System.Collections.IDictionary Dictionary
System.Collections.IEnumerable 컬렉션
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> Dictionary
System.Collections.Queue 컬렉션 또는 큐
System.Collections.Stack 컬렉션 또는 스택
System.Collections.Generic.ICollection<T> 컬렉션
System.Collections.Generic.IDictionary<TKey,TValue> Dictionary
System.Data.DataSet 데이터 세트
System.Data.DataTable 컬렉션 또는 DataTable
System.IO.Stream 스트림
System.Security.IPermission Permission
System.Security.Policy.IMembershipCondition 조건
이벤트 처리기 대리자 Eventhandler

ICollection을 구현하고 데이터 구조(예: 사전, 스택 또는 큐)의 일반화된 형식인 형식에는 형식의 용도에 관한 의미 있는 정보를 제공하는 이름이 허용됩니다.

ICollection을 구현하고 특정 항목의 컬렉션인 형식에는 ‘Collection’이라는 단어로 끝나는 이름이 지정됩니다. 예를 들어 Queue 개체의 컬렉션 이름은 ‘QueueCollection’입니다. ‘Collection’ 접미사는 foreach(Visual Basic의 경우 For Each) 문을 사용하여 컬렉션의 멤버를 열거할 수 있음을 나타냅니다.

IDictionary 또는 IReadOnlyDictionary<TKey,TValue>를 구현하는 형식에는 ‘Dictionary’라는 단어로 끝나는 이름이 지정되며 형식이 IEnumerable 또는 ICollection를 구현하는 경우에도 마찬가지입니다. ‘Collection’ 및 ‘Dictionary’ 접미사 명명 규칙을 통해 사용자는 다음 두 가지 열거형 패턴을 구분할 수 있습니다.

‘Collection’ 접미사가 있는 형식은 다음 열거형 패턴을 따릅니다.

foreach(SomeType x in SomeCollection) { }

‘Dictionary’ 접미사가 있는 형식은 다음 열거형 패턴을 따릅니다.

foreach(SomeType x in SomeDictionary.Values) { }

DataSet 개체는 무엇보다 System.Data.DataColumnSystem.Data.DataRow 개체의 컬렉션으로 구성되는 DataTable 개체의 컬렉션으로 구성됩니다. 이러한 컬렉션은 기본 System.Data.InternalDataCollectionBase 클래스를 통해 ICollection을 구현합니다.

위반 문제를 해결하는 방법

올바른 용어를 접미사로 사용하도록 형식의 이름을 바꿉니다.

경고를 표시하지 않는 경우

형식이 확장될 수 있거나 임의의 다양한 항목 세트를 저장할 일반화된 데이터 구조인 경우 ‘Collection’ 접미사를 사용하려면 경고를 표시하지 않아도 됩니다. 이 경우 데이터 구조의 구현, 성능 또는 기타 특성에 대한 의미 있는 정보를 제공하는 이름이 적합할 수 있습니다(예: BinaryTree). 형식이 특정 형식의 컬렉션을 나타내는 경우(예: StringCollection)에는 접미사가 foreach 문을 사용하여 형식을 열거할 수 있음을 나타내므로 이 규칙의 경고를 표시해야 합니다.

다른 접미사의 경우 이 규칙의 경고를 표시해야 합니다. 접미사를 사용하면 형식 이름에서 용도를 명확하게 알 수 있습니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA1710
// The code that's violating the rule is on this line.
#pragma warning restore CA1710

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA1710.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

분석할 코드 구성

다음 옵션을 사용하여 이 규칙이 실행될 코드베이스 부분을 구성합니다.

이 규칙, 적용되는 모든 규칙 또는 적용되는 이 범주의 모든 규칙(명명)에 대해 이러한 옵션을 구성할 수 있습니다. 자세한 내용은 코드 품질 규칙 구성 옵션을 참조하세요.

특정 API 화면 포함

접근성을 기반으로 이 규칙을 실행할 코드베이스의 파트를 구성할 수 있습니다. 예를 들어 규칙이 퍼블릭이 아닌 API 표면에서만 실행되도록 지정하려면 프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가합니다.

dotnet_code_quality.CAXXXX.api_surface = private, internal

간접 기본 형식 제외

규칙에서 간접 기본 형식을 제외할지 여부를 구성할 수 있습니다. 기본적으로 이 옵션은 true로 설정되어 현재 기본 형식으로 분석을 제한합니다.

dotnet_code_quality.CA1710.exclude_indirect_base_types = false

추가 필수 접미사

프로젝트의 .editorconfig 파일에 다음 키-값 쌍을 추가하여 추가 필수 접미사를 제공하거나 일부 하드 코드된 접미사의 동작을 재정의할 수 있습니다.

dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]

| 문자를 사용하여 여러 값을 구분합니다. 형식(type)은 다음 형식(format) 중 하나로 지정할 수 있습니다.

  • 형식 이름만(포함하는 형식이나 네임스페이스와 관계없이 해당 이름의 모든 형식 포함)
  • 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함)

예:

옵션 값 요약
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class ‘MyClass’에서 상속되는 모든 형식에는 ‘Class’ 접미사가 있어야 합니다.
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path ‘MyClass’에서 상속되는 모든 형식에는 ‘Class’ 접미사가 있어야 하고 ‘MyNamespace.IPath’를 구현하는 모든 형식에는 ‘Path’ 접미사가 있어야 합니다.
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} 기본 제공 접미사를 재정의합니다. 이 경우 ‘IDataReader’를 구현하는 모든 형식이 더 이상 ‘Collection’으로 끝나지 않아도 됩니다.

CA1711: 식별자에는 올바른 접미사를 사용해야 합니다.

참고 항목