다음을 통해 공유


코드 품질 규칙 구성 옵션

‘코드 품질’ 규칙에는 심각도 구성 외에 추가 구성 옵션이 있습니다. 예를 들어 각 코드 품질 분석기는 코드베이스의 특정 부분에만 적용되도록 구성할 수 있습니다. 규칙 심각도 및 일반 편집기 기본 설정을 지정하는 동일한 EditorConfig 파일에 키-값 쌍을 추가하여 이러한 옵션을 지정할 수 있습니다.

Note

이 문서에서는 규칙의 심각도를 구성하는 방법을 자세히 설명하지 않습니다. 규칙의 심각도를 설정하는 .editorconfig 옵션은 여기에 설명된 옵션(dotnet_diagnostic)과 다른 접두사(dotnet_code_quality)를 가집니다. 또한 여기에 설명된 옵션은 코드 품질 규칙과 관련된 반면 심각도 옵션은 코드 스타일 규칙에도 적용됩니다. 빠른 참조로 다음 옵션 구문을 사용하여 규칙의 심각도를 구성할 수 있습니다.

dotnet_diagnostic.<rule ID>.severity = <severity value>

그러나 규칙 심각도 구성에 대한 자세한 내용은 심각도 수준을 참조하세요.

Option scopes

모든 규칙, 규칙 범주(예: 보안 또는 디자인) 또는 특정 규칙에 대해 각 구체화 옵션을 구성할 수 있습니다.

All rules

‘모든’ 규칙에 대한 옵션을 구성하는 구문은 다음과 같습니다.

Syntax Example
dotnet_code_quality.<OptionName> = <OptionValue> dotnet_code_quality.api_surface = public

<OptionName>의 값은 옵션에 나열됩니다.

규칙 범주

규칙 ‘범주’에 대한 옵션을 구성하는 구문은 다음과 같습니다.

Syntax Example
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

Specific rule

‘특정’ 규칙에 대한 옵션을 구성하는 구문은 다음과 같습니다.

Syntax Example
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> dotnet_code_quality.CA1040.api_surface = public

Options

이 섹션에서는 코드 분석기의 사용 가능한 구성 옵션을 나열합니다. 자세한 내용은 분석기 구성참조하세요.

api_surface

Description Allowable values Default value Configurable rules
API 표면에서 분석할 부분 public(publicprotected API에 적용됨)
internal 또는 friend(internalprivate protected API에 적용됨)
private(private API에 적용됨)
all(모든 API에 적용됨)

쉼표(,)를 사용하여 여러 값을 구분
public CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234

exclude_async_void_methods

Description Allowable values Default value Configurable rules
값을 반환하지 않는 비동기 메서드를 무시할지 여부 true
false
false CA2007

Note

이전 버전에서는 이 옵션의 이름이 skip_async_void_methods였습니다.

exclude_single_letter_type_parameters

Description Allowable values Default value Configurable rules
규칙에서 단일 문자 형식 매개 변수를 제외할지 여부(예: SCollection<S>) true
false
false CA1715

Note

이전 버전에서는 이 옵션의 이름이 allow_single_letter_type_parameters였습니다.

output_kind

Description Allowable values Default value Configurable rules
이 유형의 어셈블리를 생성하는 프로젝트의 코드를 분석해야 함을 지정합니다. OutputKind 열거형의 하나 이상의 필드

쉼표(,)를 사용하여 여러 값을 구분
모든 출력 종류 CA1515, CA1516, CA2007

required_modifiers

Description Allowable values Default value Configurable rules
분석해야 하는 API에 대한 필수 한정자를 지정합니다. 아래의 허용되는 한정자 표에서 하나 이상의 값

쉼표(,)를 사용하여 여러 값을 구분
각 규칙에 따라 다름 CA1802
Allowed Modifier Summary
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

Description Allowable values Default value Configurable rules
확장 메서드의 this 매개 변수에 대한 분석을 건너뛸지 여부 true
false
false CA1062

null_check_validation_methods

Description Allowable values Default value Configurable rules
메서드에 전달된 인수가 Null이 아닌지 확인하는 Null 검사 유효성 검사 메서드의 이름 허용되는 메서드 이름 형식(|로 구분):
- 메서드 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 메서드 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함)
None CA1062

additional_string_formatting_methods

Description Allowable values Default value Configurable rules
추가 문자열 서식 지정 메서드의 이름 허용되는 메서드 이름 형식(|로 구분):
- 메서드 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 메서드 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함)
None CA2241

excluded_type_names_with_derived_types

Description Allowable values Default value Configurable rules
형식 이름(형식 및 모든 파생 형식이 분석에서 제외됨) 허용되는 기호 이름 형식(|로 구분):
- 형식 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 형식 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함)
None CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

excluded_symbol_names

Description Allowable values Default value Configurable rules
분석에서 제외되는 기호의 이름 허용되는 기호 이름 형식(|로 구분):
- 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M:, 형식 접두사 T:, 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.
생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor
None CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

disallowed_symbol_names

Description Allowable values Default value Configurable rules
분석 컨텍스트에서 허용되지 않는 기호의 이름 허용되는 기호 이름 형식(|로 구분):
- 기호 이름만(포함하는 형식 또는 네임스페이스에 관계없이 해당 이름의 모든 기호 포함)
- 기호의 설명서 ID 형식에 있는 정규화된 이름. 각 기호 이름에는 메서드 접두사 M:, 형식 접두사 T:, 네임스페이스 접두사 N: 같은 기호 종류 접두사가 필요합니다.
생성자에 대한 - .ctor 및 정적 생성자에 대한 .cctor
None CA1031

exclude_ordefault_methods

Description Allowable values Default value Configurable rules
FirstOrDefaultLastOrDefault 메서드는 분석에서 제외합니다. true 또는 false false CA1826

ignore_internalsvisibleto

Description Allowable values Default value Configurable rules
InternalsVisibleToAttribute로 표시된 어셈블리를 분석에 포함합니다. true 또는 false true CA1812CA1852

try_determine_additional_string_formatting_methods_automatically

Description Allowable values Default value Configurable rules
추가 문자열 서식 지정 메서드를 경험적으로 검색할 수 있는 부울 옵션입니다.
string format 매개 변수와 그 뒤에 params object[] 매개 변수가 있는 경우 해당 메서드는 문자열 서식 지정 메서드로 간주됩니다.
true 또는 false false CA2241

unsafe_DllImportSearchPath_bits

Description Allowable values Default value Configurable rules
분석에 안전하지 않은 DllImportSearchPath 값 구성 System.Runtime.InteropServices.DllImportSearchPath의 정수 값 770(즉, AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) CA5393

exclude_aspnet_core_mvc_controllerbase

Description Allowable values Default value Configurable rules
CSRF를 고려할 때 ASP.NET Core MVC ControllerBase 제외 true 또는 false true CA5391

enum_values_prefix_trigger

Description Allowable values Default value Configurable rules
열거 값 명명 규칙을 트리거하는 임계값 지정 - AnyEnumValue - 일부 열거형 값이 열거형 형식 이름으로 시작하는 경우 규칙이 트리거됩니다.
- AllEnumValues - 모든 열거형 값이 열거형 형식 이름으로 시작하는 경우 규칙이 트리거됩니다.
- Heuristic - 규칙은 기본 휴리스틱을 사용하여 트리거됩니다. 즉, 열거형 값의 75% 이상이 열거형 형식 이름으로 시작하는 경우 트리거됩니다.
Heuristic CA1712

exclude_indirect_base_types

Description Allowable values Default value Configurable rules
간접 기본 형식 제외 true 또는 false true CA1710

additional_required_suffixes

Description Allowable values Default value Configurable rules
추가 필수 접미사 지정 필수 접미사(->로 구분)가 포함된 형식 이름(|로 구분) 목록. 허용되는 형식 이름 형식:
- 형식 이름만(포함 형식 또는 네임스페이스에 관계없이 이름이 있는 모든 형식 포함).
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함).
None CA1710

additional_required_generic_interfaces

Description Allowable values Default value Configurable rules
추가 필수 제네릭 인터페이스 지정 필수 제네릭 정규화된 인터페이스(->로 구분)가 포함된 인터페이스 이름(|로 구분) 목록. 허용되는 인터페이스 형식:
- 인터페이스 이름만(포함된 형식 또는 네임스페이스에 관계없이 이름이 있는 모든 인터페이스 포함).
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 T: 접두사 포함).
None CA1010

Examples:

Option Value Summary
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

Description Allowable values Default value Configurable rules
상속 계층 구조 트리에서 제외할 형식 또는 네임스페이스 지정 허용되는 형식 이름 형식:
- 형식 또는 네임스페이스 이름(포함된 형식 또는 네임스페이스 및 네임스페이스에 이름이 포함된 모든 형식에 관계없이 이름이 있는 모든 형식 포함).
- 와일드카드 기호로 끝나는 형식 또는 네임스페이스 이름(포함된 형식 또는 네임스페이스에 관계없이 이름이 지정된 이름으로 시작하는 모든 형식 및 네임스페이스에 이름이 포함된 모든 형식 포함).
- 형식의 경우 선택적 T: 접두사, 네임스페이스의 경우 N: 접두사가 있는 기호 설명서 ID 유형의 정규화된 이름.
- 형식의 경우 선택적 T: 접두사 또는 네임스페이스의 경우 N: 접두사가 있고 와일드카드 기호로 끝나는 정규화된 형식 또는 네임스페이스 이름(정규화된 이름이 지정된 형식 이름으로 시작하는 모든 형식, 또는 정규화된 이름이 지정된 네임스페이스 이름으로 시작하는 모든 형식 포함).
N:System.*(이 값은 항상 제공된 값에 자동으로 추가됨) CA1501

analyzed_symbol_kinds

Description Allowable values Default value Configurable rules
분석할 기호 종류 지정 쉼표로 구분된 목록인 SymbolKind의 하나 이상의 필드. Namespace, NamedType, Method, Property, Event, Parameter CA1716

use_naming_heuristic

Description Allowable values Default value Configurable rules
Text, Message 또는 Caption을 포함하는 매개 변수 또는 속성 이름이 이 규칙을 트리거하는지 여부 구성 true 또는 false false CA1303

additional_use_results_methods

Description Allowable values Default value Configurable rules
결과를 사용해야 하는 추가 사용자 지정 API 지정 추가 메서드의 이름(|로 구분). 허용되는 메서드 이름 형식:
- 메서드 이름만(포함 형식이나 네임스페이스에 관계없이 이름이 있는 모든 메서드 포함).
- 기호의 설명서 ID 형식에 있는 정규화된 이름(선택적 M: 접두사 포함).
None CA1806

allowed_suffixes

Description Allowable values Default value Configurable rules
허용되는 접미사 지정 허용되는 접미사 목록(|로 구분). None CA1711

enable_platform_analyzer_on_pre_net5_target

Description Allowable values Default value Configurable rules
.NET 5 이전 TFM에 대한 분석을 사용하도록 설정할지 여부 지정 true 또는 false false CA1416

exclude_structs

Description Allowable values Default value Configurable rules
분석에서 구조체를 제외할지 여부 지정 true 또는 false false CA1051

additional_enum_none_names

Description Allowable values Default value Configurable rules
값이 0인 열거형 필드에 허용되는 추가 이름 지정 추가 이름 목록(|로 구분). None CA1008

enumeration_methods

Description Allowable values Default value Configurable rules
IEnumerable을 열거하는 추가 사용자 지정 메서드 지정 추가 메서드의 정규화된 이름(|로 구분). None CA1851

linq_chain_methods

Description Allowable values Default value Configurable rules
추가로 사용자 지정된 LINQ 체인 메서드 지정(즉, 메서드가 IEnumerable 인수를 사용하고 새 IEnumerable 인스턴스를 반환함) 추가 메서드의 정규화된 이름(|로 구분). None CA1851

assume_method_enumerates_parameters

Description Allowable values Default value Configurable rules
사용자 지정된 메서드가 해당 IEnumerable 매개 변수를 열거한다고 가정할지 여부 지정 true 또는 false false CA1851

데이터 흐름 분석 옵션

이 섹션의 옵션은 데이터 흐름 분석 규칙을 구성합니다. 옵션은 다음과 같습니다.

데이터 흐름 분석에 대한 자세한 내용은 데이터 흐름 분석 기반 분석기작성을 참조하세요.

dispose_analysis_kind

Description Allowable values Default value Configurable rules
Dispose 위반을 분석할 경로 지정 - AllPaths - 모든 경로(예외가 아닌 경로 및 예외 경로)에서 누락된 Dispose 위반을 추적하고 보고합니다. 또한 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에도 플래그를 지정합니다.
- AllPathsOnlyNotDisposed - 모든 경로(예외가 아닌 경로 및 예외 경로)에서 누락된 Dispose 위반을 추적하고 보고합니다. 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에는 플래그를 지정하지 마세요.
- NonExceptionPaths - 예외가 아닌 프로그램 경로에서만 누락된 Dispose 위반을 추적하고 보고합니다. 또한 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에도 플래그를 지정합니다.
- NonExceptionPathsOnlyNotDisposed - 예외가 아닌 프로그램 경로에서만 누락된 Dispose 위반을 추적하고 보고합니다. 잠재적인 Dispose 누출을 일으킬 수 있는 권장되지 않는 Dispose 패턴의 사용에는 플래그를 지정하지 마세요.
NonExceptionPaths CA2000

dispose_ownership_transfer_at_constructor

Description Allowable values Default value Configurable rules
생성자 호출에 전송된 인수에 대한 Dispose 소유권 이전 구성 true 또는 false false CA2000

dispose_ownership_transfer_at_method_call

Description Allowable values Default value Configurable rules
메서드 호출에 인수로 전송된 삭제 가능한 개체에 대한 Dispose 소유권 이전 구성 true 또는 false false CA2000

interprocedural_analysis_kind

Description Allowable values Default value Configurable rules
원본 메서드 호출에 대한 프로시저 간 분석을 수행할지 여부를 지정합니다. None, , NonContextSensitiveContextSensitive 각 구성 가능한 규칙에 특정한 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_interprocedural_method_call_chain

Description Allowable values Default value Configurable rules
프로시전 간 데이터 흐름 분석을 위해 분석할 최대 메서드 호출 체인 길이를 지정합니다. Unsigned integer 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_interprocedural_lambda_or_local_function_call_chain

Description Allowable values Default value Configurable rules
프로시전 간 데이터 흐름 분석을 위해 분석할 최대 람다 또는 로컬 함수 호출 체인 길이를 지정합니다. Unsigned integer 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

points_to_analysis_kind

Description Allowable values Default value Configurable rules
PointsToAnalysis를 수행할지 여부를 지정합니다. None, , PartialWithoutTrackingFieldsAndPropertiesComplete 각 규칙에 특정한 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

copy_analysis

Description Allowable values Default value Configurable rules
복사 분석 수행할지 여부를 지정합니다(값 및 참조 복사본 추적). true 또는 false 대부분의 규칙에 대한 true CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

sufficient_IterationCount_for_weak_KDF_algorithm

Description Allowable values Default value Configurable rules
약한 KDF(키 파생 함수) 알고리즘을 사용할 때 충분한 반복 횟수를 구성합니다. Integer 대부분의 규칙의 경우 100000 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213