代码质量规则配置选项

除了配置严重性外,代码质量规则还有其他配置选项。 例如,可以将每个代码质量分析器配置为仅应用于代码库的特定部分。 通过向指定规则严重性和常规编辑器首选项的同一个 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

选项

本部分列出了代码分析器可用的配置选项。 有关详细信息,请参阅 分析器配置

api_surface

Description Allowable values Default value Configurable rules
要分析 API 图面的哪个部分 public(适用于 publicprotected API)
internalfriend(适用于 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
是否从规则中排除单字符的类型参数,例如,S 中的 Collection<S> true
false
false CA1715

Note

早期版本中将此选项命名为 allow_single_letter_type_parameters

output_kind

Description Allowable values Default value Configurable rules
指定应分析项目中生成此程序集类型的代码 OutputKind 枚举的一个或多个字段

用逗号 (,) 分隔多个值
所有输出种类 CA1515CA1516CA2007

required_modifiers

Description Allowable values Default value Configurable rules
指定应分析的 API 所需的修饰符 以下允许的修饰符表中的一个或多个值

用逗号 (,) 分隔多个值
取决于每个规则 CA1802
Allowed Modifier Summary
none 无修饰符要求
staticShared 必须声明为 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 方法。 truefalse false CA1826

ignore_internalsvisibleto

Description Allowable values Default value Configurable rules
在分析中包括标有 InternalsVisibleToAttribute 的程序集。 truefalse true CA1812CA1852

try_determine_additional_string_formatting_methods_automatically

Description Allowable values Default value Configurable rules
布尔选项,用于启用启发式检测其他字符串格式设置方法。
如果方法具有 string format 参数且后跟 params object[] 参数,则该方法被视为字符串格式设置方法。
truefalse 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 truefalse true CA5391

enum_values_prefix_trigger

Description Allowable values Default value Configurable rules
指定要触发枚举值命名规则的阈值 - AnyEnumValue - 如果任意枚举值以枚举类型名称开头,则会触发此规则
- AllEnumValues - 如果所有枚举值均以枚举类型名称开头,则会触发此规则
- Heuristic - 使用默认 FxCop 启发式(即至少 75% 的枚举值以枚举类型名称开头)触发规则。
Heuristic CA1712

exclude_indirect_base_types

Description Allowable values Default value Configurable rules
排除间接基类型 truefalse 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
指定要从继承层次结构树中排除的类型或命名空间 允许的类型名称格式:
- 类型或命名空间名称(包括具有名称的所有类型,不考虑包含的类型或命名空间,以及其命名空间包含名称的所有类型)。
- 以通配符结尾的类型或命名空间名称(包括名称以给定名称开头的所有类型,不考虑包含的类型或命名空间,以及其命名空间包含名称的所有类型)。
- 完全限定的名称,使用符号的文档 ID 格式,使用可选 T: 前缀代表类型,或者使用 N: 前缀代表命名空间。
- 完全限定的名称或命名空间名称,使用可选 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
配置包含 TextMessageCaption 的参数或属性名称是否会触发此规则 truefalse 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 启用分析 truefalse false CA1416

exclude_structs

Description Allowable values Default value Configurable rules
指定是否从分析中排除结构 truefalse false CA1051

additional_enum_none_names

Description Allowable values Default value Configurable rules
为零值枚举字段指定其他允许的名称 其他名称列表(用 | 分隔)。 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 参数 truefalse false CA1851

数据流分析选项

本节中的选项配置数据流分析规则。 选项包括:

有关数据流分析的详细信息,请参阅 编写基于数据流分析的分析器

dispose_analysis_kind

Description Allowable values Default value Configurable rules
指定要分析哪些路径存在释放冲突 - AllPaths - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。
- AllPathsOnlyNotDisposed - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。
- NonExceptionPaths - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。
- NonExceptionPathsOnlyNotDisposed - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。
NonExceptionPaths CA2000

dispose_ownership_transfer_at_constructor

Description Allowable values Default value Configurable rules
为传递给构造函数调用的参数配置释放所有权转移 truefalse false CA2000

dispose_ownership_transfer_at_method_call

Description Allowable values Default value Configurable rules
为作为参数传递给方法调用的可释放对象配置释放所有权转移 truefalse false CA2000

interprocedural_analysis_kind

Description Allowable values Default value Configurable rules
指定是否对源方法调用执行程序间分析 NoneNonContextSensitiveContextSensitive 特定于每个可配置规则 CA1062CA1303CA1508CA2000CA2100CA22213

max_interprocedural_method_call_chain

Description Allowable values Default value Configurable rules
指定用于程序间数据流分析的最大方法调用链长度 Unsigned integer 3 CA1062CA1303CA1508CA2000CA2100CA22213

max_interprocedural_lambda_or_local_function_call_chain

Description Allowable values Default value Configurable rules
指定用于程序间数据流分析的最大 lambda 或本地函数调用链长度 Unsigned integer 3 CA1062CA1303CA1508CA2000CA2100CA22213

points_to_analysis_kind

Description Allowable values Default value Configurable rules
指定是否执行 PointsToAnalysis NonePartialWithoutTrackingFieldsAndPropertiesComplete 特定于每个规则 CA1062CA1303CA1508CA2000CA2100CA22213

copy_analysis

Description Allowable values Default value Configurable rules
指定是否执行复制分析(跟踪值和引用拷贝) truefalse true 适用于大多数规则 CA1062CA1303CA1508CA2000CA2100CA22213

sufficient_IterationCount_for_weak_KDF_algorithm

Description Allowable values Default value Configurable rules
使用较弱的密钥派生函数(KDF)算法时配置足够的迭代计数 Integer 100000 适用于大多数规则 CA1062CA1303CA1508CA2000CA2100CA22213