CA1506: Evitar el acoplamiento excesivo de clases
Propiedad | Value |
---|---|
Identificador de la regla | CA1506 |
Título | Evitar el acoplamiento excesivo de clases |
Categoría | Capacidad de mantenimiento |
La corrección es problemática o no problemática | Problemático |
Umbral predeterminado | Tipos: 95 Otros símbolos: 40 |
Habilitado de forma predeterminada en .NET 8 | No |
Causa
Un tipo, método, campo, propiedad o evento se combina con muchos otros tipos. Los tipos generados por el compilador se excluyen de esta métrica.
Descripción de la regla
Esta regla mide el acoplamiento de clase contando el número de referencias de tipo únicas que un tipo, método, campo, propiedad o evento contiene. El umbral de acoplamiento predeterminado es 95 para los tipos y 40 para otros tipos de símbolos y los umbrales son configurables.
Los tipos, métodos y otros símbolos que tienen un alto grado de acoplamiento de clases pueden ser difíciles de mantener. Es recomendable tener tipos, métodos y otros símbolos que muestren un acoplamiento bajo y una cohesión alta.
Cómo corregir infracciones
Para corregir esta infracción, intente rediseñar el tipo o el método para reducir el número de tipos a los que están acoplados.
Cuándo suprimir las advertencias
Excluye esta advertencia cuando el tipo o el método se considere mantenible a pesar de su gran número de dependencias en otros tipos.
Nota
Es posible que vea advertencias de falsos positivos de esta regla si se aplica todo lo siguiente:
- Está usando Visual Studio 2022, versión 17.5 o posterior, con una versión anterior del SDK de .NET, es decir, .NET 6 o una anterior.
- Está usando los analizadores del SDK de .NET 6 o una versión anterior de los paquetes del analizador, como Microsoft.CodeAnalysis.FxCopAnalyzers.
Los falsos positivos se deben a un cambio importante en el compilador de C#. Considere la posibilidad de usar un analizador más reciente que incluya la corrección de las advertencias de falsos positivos. Actualice a Microsoft.CodeAnalysis.NetAnalyzers, versión 7.0.0-preview1.22464.1 o posterior, o bien use los analizadores del SDK de .NET 7.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Configuración del umbral
Puede configurar el umbral en el que se activa esta regla y los tipos de símbolos que se van a analizar. Los tipos de símbolos permitidos son:
Assembly
Namespace
Type
Method
Field
Event
Property
Cree un archivo de texto denominado CodeMetricsConfig.txt.
Agregue el umbral deseado al archivo de texto con el formato siguiente:
CA1506(Method): 60 CA1506(Type): 120
En este ejemplo, la regla se configura para activarse cuando un método tiene más de 60 referencias de tipo único o un tipo tiene más de 120 referencias de tipo único. Con este archivo de configuración, la regla seguirá marcando campos, propiedades y eventos cuyo acoplamiento de clases sea mayor que el umbral predeterminado (40).
En el archivo del proyecto, marque la acción de compilación del archivo de configuración como AdditionalFiles. Por ejemplo:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>