코드 품질 규칙 구성 옵션
‘코드 품질’ 규칙에는 심각도 구성 외에 추가 구성 옵션이 있습니다. 예를 들어 각 코드 품질 분석기는 코드베이스의 특정 부분에만 적용되도록 구성할 수 있습니다. 규칙 심각도 및 일반 편집기 기본 설정을 지정하는 동일한 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 |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 |
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 | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
excluded_symbol_names
설명 | 허용되는 값 | 기본값 | 구성 가능한 규칙 |
---|---|---|---|
분석에서 제외되는 기호의 이름 | 허용되는 기호 이름 형식(|로 구분): - 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함) - 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M: , 형식 접두사 T: , 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor |
None | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
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 |
CA1812CA1852 |
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 유형의 정규화된 이름.- 정규화된 형식 또는 네임스페이스 이름(네임스페이스의 형식 또는 N: 접두사에 대한 선택적 T: 접두사 및 와일드카드 기호로 끝나는 이름 포함)(정규화된 이름이 지정된 형식 이름으로 시작하는 모든 형식 또는 정규화된 이름이 지정된 네임스페이스 이름으로 시작하는 모든 형식 포함) |
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
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기