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
  1. Cree un archivo de texto denominado CodeMetricsConfig.txt.

  2. 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).

  3. 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>
    

Consulte también