代码质量规则配置选项
除了配置严重性外,代码质量规则还有其他配置选项。 例如,可以将每个代码质量分析器配置为仅应用于代码库的特定部分。 通过向指定规则严重性和常规编辑器首选项的同一个 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: (可选) |
无 | CA1062 |
additional_string_formatting_methods
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
其他字符串格式设置方法的名称 | 允许的方法名称格式(以 | 分隔): - 仅方法名称(包括具有相应名称的所有方法,不考虑包含的类型或命名空间) - 完全限定的名称,使用符号的文档 ID 格式,前缀为 M: (可选) |
无 | CA2241 |
excluded_type_names_with_derived_types
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
类型的名称,用于将类型及其所有派生类型从分析范围内排除 | 允许的符号名称格式(以 | 分隔): - 仅类型名称(包括具有相应名称的所有类型,不考虑包含的类型或命名空间) - 完全限定的名称,使用符号的文档 ID 格式,前缀为 T: (可选) |
无 | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
excluded_symbol_names
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
从分析范围排除的符号的名称 | 允许的符号名称格式(以 | 分隔): - 仅符号名称(包括具有相应名称的所有符号,不考虑包含的类型或命名空间) - 完全限定的名称,使用符号的文档 ID 格式 每个符号名称都需要带有一个符号类型前缀,例如表示方法的 M: 前缀、表示类型的 T: 前缀,以及表示命名空间的 N: 前缀。- .ctor 表示构造函数,.cctor 表示静态构造函数 |
无 | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
disallowed_symbol_names
描述 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
不允许出现在分析上下文中的符号的名称 | 允许的符号名称格式(以 | 分隔): - 仅符号名称(包括具有相应名称的所有符号,不考虑包含的类型或命名空间) - 完全限定的名称,使用符号的文档 ID 格式 每个符号名称都需要带有一个符号类型前缀,例如表示方法的 M: 前缀、表示类型的 T: 前缀,以及表示命名空间的 N: 前缀。- .ctor 表示构造函数,.cctor 表示静态构造函数 |
无 | 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
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定要分析哪些路径存在释放冲突 | - AllPaths - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。- AllPathsOnlyNotDisposed - 跟踪和报告所有路径(非异常和异常路径)上丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。- NonExceptionPaths - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 此外,还会标记使用不推荐的释放模式,该模式可能导致潜在释放泄漏。- NonExceptionPathsOnlyNotDisposed - 仅在非异常程序路径上跟踪和报告丢失的释放冲突。 不标记使用可能导致潜在释放泄漏的不推荐的释放模式。 |
NonExceptionPaths |
CA2000 |
dispose_ownership_transfer_at_constructor
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
为传递给构造函数调用的参数配置释放所有权转移 | true 或 false |
false |
CA2000 |
dispose_ownership_transfer_at_method_call
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
为作为参数传递给方法调用的可释放对象配置释放所有权转移 | true 或 false |
false |
CA2000 |
enum_values_prefix_trigger
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定要触发枚举值命名规则的阈值 | - AnyEnumValue - 如果任意枚举值以枚举类型名称开头,则会触发此规则。- AllEnumValues - 如果所有枚举值均以枚举类型名称开头,则会触发此规则。- Heuristic - 使用默认 FxCop 启发式(即至少 75% 的枚举值以枚举类型名称开头)触发规则。 |
Heuristic |
CA1712 |
exclude_indirect_base_types
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
排除间接基类型 | true 或 false |
true |
CA1710 |
additional_required_suffixes
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定其他所需的后缀 | 类型名称(用 | 分隔)及其所需后缀(用 -> 分隔)的列表。 允许的类型名称格式:- 仅类型名称(包括具有相应名称的所有类型,不考虑包含的类型或命名空间)。 - 完全限定的名称,使用符号的文档 ID 格式,前缀为 T: (可选)。 |
无 | CA1710 |
additional_required_generic_interfaces
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定其他所需的泛型接口 | 接口名称(用 | 分隔)及其所需的通用完全限定接口(用 -> 分隔)的列表。 允许的接口格式:- 仅接口名称(包括具有相应名称的所有接口,不考虑包含的类型或命名空间)。 - 完全限定的名称,使用符号的文档 ID 格式,前缀为 T: (可选)。 |
无 | 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
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定要从继承层次结构树中排除的类型或命名空间 | 允许的类型名称格式: - 类型或命名空间名称(包括具有名称的所有类型,不考虑包含的类型或命名空间,以及其命名空间包含名称的所有类型)。 - 以通配符结尾的类型或命名空间名称(包括名称以给定名称开头的所有类型,不考虑包含的类型或命名空间,以及其命名空间包含名称的所有类型)。 - 完全限定的名称,使用符号的文档 ID 格式,使用可选 T: 前缀代表类型,或者使用 N: 前缀代表命名空间。- 完全限定的名称或命名空间名称,使用可选 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: (可选)。 |
无 | CA1806 |
allowed_suffixes
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定允许的后缀 | 允许的后缀列表(用 | 分隔)。 | 无 | 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
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
为零值枚举字段指定其他允许的名称 | 其他名称列表(用 | 分隔)。 | 无 | CA1008 |
enumeration_methods
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定枚举 IEnumerable 的其他自定义方法 | 其他方法的完全限定名称(用 | 分隔)。 | 无 | CA1851 |
linq_chain_methods
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定其他自定义 LINQ 链方法(即接收 IEnumerable 参数并返回新的 IEnumerable 实例的方法) |
其他方法的完全限定名称(用 | 分隔)。 | 无 | CA1851 |
assume_method_enumerates_parameters
说明 | 允许的值 | 默认值 | 可配置的规则 |
---|---|---|---|
指定是否假定自定义方法枚举其 IEnumerable 参数 |
true 或 false |
false |
CA1851 |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈