CA1506 : Éviter les couplages de classe excessifs

Propriété Value
Identificateur de la règle CA1506
Titre Éviter les couplages de classe excessifs
Catégorie Maintenabilité
Le correctif est cassant ou non cassant Rupture
Seuil par défaut Types : 95 Autres symboles : 40
Activé par défaut dans .NET 8 Non

Cause

Un type, une méthode, un champ, une propriété ou un événement est couplé à de nombreux autres types. Les types générés par le compilateur sont exclus de cette métrique.

Description de la règle

Cette règle mesure le couplage de classes en comptant le nombre de références de type unique contenues dans un type, une méthode, un champ, une propriété ou un événement. Le seuil de couplage par défaut est 95 pour les types et 40 pour les autres types de symboles et les seuils sont configurables.

Les types, méthodes et autres symboles qui ont un degré élevé de couplage de classes peuvent être difficiles à maintenir. Il est recommandé d’avoir des types, des méthodes et d’autres symboles qui présentent un faible couplage et une forte cohésion.

Comment corriger les violations

Pour résoudre cette violation, essayez de reconcevoir le type ou la méthode afin de réduire le nombre de types auxquels elle est couplée.

Quand supprimer les avertissements

Vous pouvez supprimer cet avertissement lorsque le type ou la méthode est considéré comme pouvant être géré malgré son grand nombre de dépendances envers d’autres types.

Remarque

Vous pouvez voir des avertissements de faux positifs de cette règle si tous les éléments suivants s’appliquent :

  • Vous utilisez Visual Studio 2022 version 17.5 ou ultérieure avec une version antérieure du Kit de développement logiciel (SDK) .NET, c’est-à-dire .NET 6 ou version antérieure.
  • Vous utilisez les analyseurs du Kit de développement logiciel (SDK) .NET 6 ou d’une version antérieure des packages d’analyseurs, comme Microsoft.CodeAnalysis.FxCopAnalyzers.

Les faux positifs sont dus à un changement cassant dans le compilateur C#. Envisagez d’utiliser un analyseur plus récent qui contient le correctif pour les avertissements faux positifs. Effectuez une mise à niveau vers Microsoft.CodeAnalysis.NetAnalyzers version 7.0.0-préversion1.22464.1 ou ultérieure ou utilisez les analyseurs du Kit de développement logiciel (SDK) .NET 7.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Configurer le seuil

Vous pouvez configurer le seuil auquel cette règle se déclenche et les types de symboles à analyser. Les types de symboles autorisés sont les suivants :

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. Créez un fichier texte nommé CodeMetricsConfig.txt.

  2. Ajoutez le seuil souhaité au fichier texte au format suivant :

    CA1506(Method): 60
    CA1506(Type): 120
    

    Dans cet exemple, la règle est configurée pour être déclenchée lorsqu’une méthode a plus de 60 références de type unique ou qu’un type a plus de 120 références de type unique. Avec ce fichier config, la règle continue à marquer les champs, les propriétés et les événements dont le couplage de classes est supérieur au seuil par défaut (40).

  3. Dans le fichier projet, marquez l’action de génération du fichier config comme AdditionalFiles. Par exemple :

    <ItemGroup>
      <AdditionalFiles Include="CodeMetricsConfig.txt" />
    </ItemGroup>
    

Voir aussi