CA1506:避免过度类耦合度
属性 | 值 |
---|---|
规则 ID | CA1506 |
标题 | 避免过度类耦合度 |
类别 | 可维护性 |
修复是中断修复还是非中断修复 | 重大 |
默认阈值 | 类型:95 其他符号:40 |
在 .NET 9 中默认启用 | 否 |
原因
类型、方法、字段、属性或事件与许多其他类型耦合。 编译器生成的类型不包括在此指标中。
规则说明
此规则通过计算类型、方法、字段、属性或事件包含的唯一类型引用的数量来衡量类耦合。 类型的默认耦合阈值为 95,其他符号类型的默认耦合阈值为 40,阈值可配置。
很难维护类耦合度较高的类型、方法和其他符号。 最好拥有低耦合度和高内聚的类型、方法和其他符号。
如何解决冲突
若要解决此冲突,请尝试重新设计类型或方法,以减少其耦合的类型的数量。
何时禁止显示警告
尽管类型或方法对其他类型有很多依赖项,当它被视为可维护时,可以禁止显示此警告。
注意
如果满足以下所有条件,你可能会看到来自此规则的误报警告:
- 你将 Visual Studio 2022 版本 17.5 或更高版本与旧版 .NET SDK(即 .NET 6 或更低版本)配合使用。
- 你使用的是 .NET 6 SDK 中的分析器或较旧版本的分析器包,例如 Microsoft.CodeAnalysis.FxCopAnalyzers。
误报是由于 C# 编译器中的中断性变更造成的。 请考虑使用更新的包含误报警告修补程序的分析器。 升级到 Microsoft.CodeAnalysis.NetAnalyzers 版本 7.0.0-preview1.22464.1 或更高版本,或使用 .NET 7 SDK 中的分析器。
抑制警告
如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。
#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506
若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none
。
[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none
有关详细信息,请参阅如何禁止显示代码分析警告。
配置阈值
可以配置此规则触发的阈值以及要分析的符号类型。 允许的符号类型包括:
Assembly
Namespace
Type
Method
Field
Event
Property
创建名为 CodeMetricsConfig.txt 的文本文件。
按以下格式将所需的阈值添加到文本文件中:
CA1506(Method): 60 CA1506(Type): 120
在此示例中,规则配置为在方法具有超过 60 个唯一类型引用或类型具有超过 120 个唯一类型引用时触发。 使用此配置文件,规则将继续标记其类耦合度超过默认阈值 (40) 的字段、属性和事件。
在项目文件中,将配置文件的生成操作标记为 AdditionalFiles。 例如:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>