코드 품질 규칙 구성 옵션
‘코드 품질’ 규칙에는 심각도 구성 외에 추가 구성 옵션이 있습니다. 예를 들어 각 코드 품질 분석기는 코드베이스의 특정 부분에만 적용되도록 구성할 수 있습니다. 규칙 심각도 및 일반 편집기 기본 설정을 지정하는 동일한 EditorConfig 파일에 키-값 쌍을 추가하여 이러한 옵션을 지정할 수 있습니다.
참고 항목
이 문서에서는 규칙의 심각도를 구성하는 방법을 자세히 설명하지 않습니다. 규칙의 심각도를 설정하는 .editorconfig 옵션에는 여기에 설명된 옵션(dotnet_code_quality
)과 다른 접두사(dotnet_diagnostic
)가 있습니다. 또한 여기에 설명된 옵션은 코드 품질 규칙과 관련된 반면 심각도 옵션은 코드 스타일 규칙에도 적용됩니다. 빠른 참조로 다음 옵션 구문을 사용하여 규칙의 심각도를 구성할 수 있습니다.
dotnet_diagnostic.<rule ID>.severity = <severity value>
그러나 규칙 심각도 구성에 대한 자세한 내용은 심각도 수준을 참조하세요.
옵션 범위
모든 규칙, 규칙 범주(예: 보안 또는 디자인) 또는 특정 규칙에 대해 각 구체화 옵션을 구성할 수 있습니다.
모든 규칙
‘모든’ 규칙에 대한 옵션을 구성하는 구문은 다음과 같습니다.
구문 | 예시 |
---|---|
dotnet_code_quality.<OptionName> = <OptionValue> | dotnet_code_quality.api_surface = public |
<OptionName>
의 값은 옵션에 나열됩니다.
규칙 범주
규칙 ‘범주’에 대한 옵션을 구성하는 구문은 다음과 같습니다.
구문 | 예시 |
---|---|
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue | dotnet_code_quality.Naming.api_surface = public |
다음 표에는 <RuleCategory>
에 사용 가능한 값이 나열되어 있습니다.
Design
Documentation
Globalization
Interoperability
Maintainability
Naming
Performance
SingleFile
Reliability
Security
Usage
특정 규칙
‘특정’ 규칙에 대한 옵션을 구성하는 구문은 다음과 같습니다.
구문 | 예시 |
---|---|
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
옵션
이 섹션에는 사용 가능한 옵션 중 일부가 나열되어 있습니다. 사용 가능한 옵션의 전체 목록을 보려면 분석기 구성을 참조하세요.
- api_surface
- exclude_async_void_methods
- exclude_single_letter_type_parameters
- output_kind
- required_modifiers
- exclude_extension_method_this_parameter
- null_check_validation_methods
- additional_string_formatting_methods
- excluded_type_names_with_derived_types
- excluded_symbol_names
- disallowed_symbol_names
- exclude_ordefault_methods
- ignore_internalsvisibleto
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- exclude_aspnet_core_mvc_controllerbase
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- enum_values_prefix_trigger
- exclude_indirect_base_types
- additional_required_suffixes
- additional_required_generic_interfaces
- additional_inheritance_excluded_symbol_names
- analyzed_symbol_kinds
- use_naming_heuristic
- additional_use_results_methods
- allowed_suffixes
- enable_platform_analyzer_on_pre_net5_target
- exclude_structs
- additional_enum_none_names
- enumeration_methods
- linq_chain_methods
- assume_method_enumerates_parameters
api_surface
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
API 표면에서 분석할 부분 | public (public 및 protected API에 적용됨)internal 또는 friend (internal 및 private protected API에 적용됨)private (private API에 적용됨)all (모든 API에 적용됨)쉼표(,)를 사용하여 여러 값을 구분 |
public |
CA1000 CA1002 CA1003 CA1005 CA1008 CA1010 CA1012 CA1021 CA1024 CA1027 CA1028 CA1030 CA1036 CA1040 CA1041 CA1043 CA1044 CA1045 CA1046 CA1047 CA1051 CA1052 CA1054 CA1055 CA1056 CA1058 CA1062 CA1063 CA1068 CA1070 CA1700 CA1707 CA1708 CA1710 CA1711 CA1714 CA1715 CA1716 CA1717 CA1720 CA1721 CA1725 CA1801 CA1802 CA1815 CA1819 CA1822 CA1859 CA2208 CA2217 CA2225 CA2226 CA2231 CA2234 |
exclude_async_void_methods
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
값을 반환하지 않는 비동기 메서드를 무시할지 여부 | true false |
false |
CA2007 |
참고 항목
이전 버전에서는 이 옵션의 이름이 skip_async_void_methods
였습니다.
exclude_single_letter_type_parameters
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
규칙에서 단일 문자 형식 매개 변수를 제외할지 여부(예: Collection<S> 의 S ) |
true false |
false |
CA1715 |
참고 항목
이전 버전에서는 이 옵션의 이름이 allow_single_letter_type_parameters
였습니다.
output_kind
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
이 유형의 어셈블리를 생성하는 프로젝트의 코드를 분석해야 함을 지정합니다. | OutputKind 열거형의 하나 이상의 필드 쉼표(,)를 사용하여 여러 값을 구분 |
모든 출력 종류 | CA2007 |
required_modifiers
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
분석해야 하는 API에 대한 필수 한정자를 지정합니다. | 아래의 허용되는 한정자 표에서 하나 이상의 값 쉼표(,)를 사용하여 여러 값을 구분 |
각 규칙에 따라 다름 | CA1802 |
허용되는 한정자 | 요약 |
---|---|
none |
한정자 요구 사항 없음 |
static 또는 Shared |
static 으로 선언해야 함(Visual Basic에서는 Shared ) |
const |
const 으로 선언해야 함 |
readonly |
readonly 으로 선언해야 함 |
abstract |
abstract 으로 선언해야 함 |
virtual |
virtual 으로 선언해야 함 |
override |
override 으로 선언해야 함 |
sealed |
sealed 으로 선언해야 함 |
extern |
extern 으로 선언해야 함 |
async |
async 으로 선언해야 함 |
exclude_extension_method_this_parameter
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
확장 메서드의 this 매개 변수에 대한 분석을 건너뛸지 여부 |
true false |
false |
CA1062 |
null_check_validation_methods
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
메서드에 전달된 인수가 Null이 아닌지 확인하는 Null 검사 유효성 검사 메서드의 이름 | 허용되는 메서드 이름 형식(|로 구분): - 메서드 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 메서드 포함) - 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함) |
None | CA1062 |
additional_string_formatting_methods
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
추가 문자열 서식 지정 메서드의 이름 | 허용되는 메서드 이름 형식(|로 구분): - 메서드 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 메서드 포함) - 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함) |
None | CA2241 |
excluded_type_names_with_derived_types
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
형식 이름(형식 및 모든 파생 형식이 분석에서 제외됨) | 허용되는 기호 이름 형식(|로 구분): - 형식 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 형식 포함) - 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함) |
None | CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400 |
excluded_symbol_names
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
분석에서 제외되는 기호의 이름 | 허용되는 기호 이름 형식(|로 구분): - 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함) - 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M: , 형식 접두사 T: , 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor |
None | CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400 |
disallowed_symbol_names
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
분석 컨텍스트에서 허용되지 않는 기호의 이름 | 허용되는 기호 이름 형식(|로 구분): - 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함) - 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M: , 형식 접두사 T: , 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor |
None | CA1031 |
exclude_ordefault_methods
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
FirstOrDefault 및 LastOrDefault 메서드는 분석에서 제외합니다. |
true 또는 false |
false |
CA1826 |
ignore_internalsvisibleto
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
InternalsVisibleToAttribute로 표시된 어셈블리를 분석에 포함합니다. | true 또는 false |
true |
CA1812 CA1852 |
try_determine_additional_string_formatting_methods_automatically
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
추가 문자열 서식 지정 메서드를 경험적으로 검색할 수 있는 부울 옵션입니다.string format 매개 변수와 그 뒤에 params object[] 매개 변수가 있는 경우 해당 메서드는 문자열 서식 지정 메서드로 간주됩니다. |
true 또는 false |
false |
CA2241 |
unsafe_DllImportSearchPath_bits
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
분석에 안전하지 않은 DllImportSearchPath 값 구성 |
System.Runtime.InteropServices.DllImportSearchPath 의 정수 값 |
770 (즉, AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory ) |
CA5393 |
exclude_aspnet_core_mvc_controllerbase
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
CSRF를 고려할 때 ASP.NET Core MVC ControllerBase 제외 | true 또는 false |
true |
CA5391 |
dispose_analysis_kind
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
Dispose 위반을 분석할 경로 지정 | - AllPaths - 모든 경로(예외가 아닌 경로 및 예외 경로)에서 누락된 Dispose 위반을 추적하고 보고합니다. 또한 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에도 플래그를 지정합니다.- AllPathsOnlyNotDisposed - 모든 경로(예외가 아닌 경로 및 예외 경로)에서 누락된 Dispose 위반을 추적하고 보고합니다. 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에는 플래그를 지정하지 마세요.- NonExceptionPaths - 예외가 아닌 프로그램 경로에서만 누락된 Dispose 위반을 추적하고 보고합니다. 또한 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에도 플래그를 지정합니다.- NonExceptionPathsOnlyNotDisposed - 예외가 아닌 프로그램 경로에서만 누락된 Dispose 위반을 추적하고 보고합니다. 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에는 플래그를 지정하지 마세요. |
NonExceptionPaths |
CA2000 |
dispose_ownership_transfer_at_constructor
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
생성자 호출에 전송된 인수에 대한 Dispose 소유권 이전 구성 | true 또는 false |
false |
CA2000 |
dispose_ownership_transfer_at_method_call
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
메서드 호출에 인수로 전송된 삭제 가능한 개체에 대한 Dispose 소유권 이전 구성 | true 또는 false |
false |
CA2000 |
enum_values_prefix_trigger
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
열거 값 명명 규칙을 트리거하는 임계값 지정 | - AnyEnumValue - 일부 열거형 값이 열거형 형식 이름으로 시작하는 경우 규칙이 트리거됩니다.- AllEnumValues - 모든 열거형 값이 열거형 형식 이름으로 시작하는 경우 규칙이 트리거됩니다.- Heuristic - 규칙은 기본 휴리스틱을 사용하여 트리거됩니다. 즉, 열거형 값의 75% 이상이 열거형 형식 이름으로 시작하는 경우 트리거됩니다. |
Heuristic |
CA1712 |
exclude_indirect_base_types
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
간접 기본 형식 제외 | true 또는 false |
true |
CA1710 |
additional_required_suffixes
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
추가 필수 접미사 지정 | 필수 접미사(-> 로 구분)가 포함된 형식 이름(|로 구분) 목록. 허용되는 형식 이름 형식:- 형식 이름만(포함 형식 또는 네임스페이스에 관계없이 이름이 있는 모든 형식 포함). - 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함). |
None | CA1710 |
additional_required_generic_interfaces
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
추가 필수 제네릭 인터페이스 지정 | 필수 제네릭 정규화된 인터페이스(-> 로 구분)가 포함된 인터페이스 이름(|로 구분) 목록. 허용되는 인터페이스 형식:- 인터페이스 이름만(포함된 형식 또는 네임스페이스에 관계없이 이름이 있는 모든 인터페이스 포함). - 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함). |
None | CA1010 |
예:
옵션 값 | 요약 |
---|---|
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 |
네임스페이스에 관계없이 ISomething 을 구현하는 모든 형식은 System.Collections.Generic.IEnumerable\`1 도 구현해야 합니다. |
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 |
System.Collections.IDictionary 를 구현하는 모든 형식은 System.Collections.Generic.IDictionary`2 도 구현해야 합니다. |
additional_inheritance_excluded_symbol_names
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
상속 계층 구조 트리에서 제외할 형식 또는 네임스페이스 지정 | 허용되는 형식 이름 형식: - 형식 또는 네임스페이스 이름(포함된 형식 또는 네임스페이스 및 네임스페이스에 이름이 포함된 모든 형식에 관계없이 이름이 있는 모든 형식 포함). - 와일드카드 기호로 끝나는 형식 또는 네임스페이스 이름(포함된 형식 또는 네임스페이스에 관계없이 이름이 지정된 이름으로 시작하는 모든 형식 및 네임스페이스에 이름이 포함된 모든 형식 포함). - 형식의 경우 선택적 T: 접두사, 네임스페이스의 경우 N: 접두사가 있는 기호 설명서 ID 유형의 정규화된 이름.- 형식의 경우 선택적 T: 접두사 또는 네임스페이스의 경우 N: 접두사가 있고 와일드카드 기호로 끝나는 정규화된 형식 또는 네임스페이스 이름(정규화된 이름이 지정된 형식 이름으로 시작하는 모든 형식, 또는 정규화된 이름이 지정된 네임스페이스 이름으로 시작하는 모든 형식 포함). |
N:System.* (이 값은 항상 제공된 값에 자동으로 추가됨) |
CA1501 |
analyzed_symbol_kinds
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
분석할 기호 종류 지정 | 쉼표로 구분된 목록인 SymbolKind의 하나 이상의 필드. | Namespace, NamedType, Method, Property, Event, Parameter |
CA1716 |
use_naming_heuristic
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
Text , Message 또는 Caption 을 포함하는 매개 변수 또는 속성 이름이 이 규칙을 트리거하는지 여부 구성 |
true 또는 false |
false |
CA1303 |
additional_use_results_methods
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
결과를 사용해야 하는 추가 사용자 지정 API 지정 | 추가 메서드의 이름(|로 구분). 허용되는 메서드 이름 형식: - 메서드 이름만(포함 형식이나 네임스페이스에 관계없이 이름이 있는 모든 메서드 포함). - 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함). |
None | CA1806 |
allowed_suffixes
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
허용되는 접미사 지정 | 허용되는 접미사 목록(|로 구분). | None | CA1711 |
enable_platform_analyzer_on_pre_net5_target
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
.NET 5 이전 TFM에 대한 분석을 사용하도록 설정할지 여부 지정 | true 또는 false |
false |
CA1416 |
exclude_structs
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
분석에서 구조체를 제외할지 여부 지정 | true 또는 false |
false |
CA1051 |
additional_enum_none_names
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
값이 0인 열거형 필드에 허용되는 추가 이름 지정 | 추가 이름 목록(|로 구분). | None | CA1008 |
enumeration_methods
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
IEnumerable을 열거하는 추가 사용자 지정 메서드 지정 | 추가 메서드의 정규화된 이름(|로 구분). | None | CA1851 |
linq_chain_methods
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
추가로 사용자 지정된 LINQ 체인 메서드 지정(즉, 메서드가 IEnumerable 인수를 사용하고 새 IEnumerable 인스턴스를 반환함) |
추가 메서드의 정규화된 이름(|로 구분). | None | CA1851 |
assume_method_enumerates_parameters
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
사용자 지정된 메서드가 해당 IEnumerable 매개 변수를 열거한다고 가정할지 여부 지정 |
true 또는 false |
false |
CA1851 |
.NET