CA1506: Evitare un numero eccessivo di accoppiamenti di classi

Proprietà valore
ID regola CA1506
Titolo Evitare un numero eccessivo di accoppiamenti tra classi
Categoria Gestibilità
Correzione che causa un'interruzione o un'interruzione Interruzione
Soglia predefinita Tipi: 95 Altri simboli: 40
Abilitato per impostazione predefinita in .NET 8 No

Causa

Un tipo, un metodo, un campo, una proprietà o un evento è associato a molti altri tipi. I tipi generati dal compilatore vengono esclusi da questa metrica.

Descrizione regola

Questa regola misura l'accoppiamento della classe conteggiando il numero di riferimenti di tipo univoco contenuti in un tipo, un metodo, un campo, una proprietà o un evento. La soglia di accoppiamento predefinita è 95 per i tipi e 40 per altri tipi di simboli e le soglie sono configurabili.

I tipi, i metodi e altri simboli con un grado elevato di accoppiamento di classi possono essere difficili da gestire. È consigliabile avere tipi, metodi e altri simboli che presentano un accoppiamento basso e un'elevata coesione.

Come correggere le violazioni

Per correggere questa violazione, provare a riprogettare il tipo o il metodo per ridurre il numero di tipi a cui è accoppiato.

Quando eliminare gli avvisi

È possibile eliminare questo avviso quando il tipo o il metodo è considerato gestibile nonostante il numero elevato di dipendenze da altri tipi.

Nota

Se si applicano tutti gli avvisi seguenti, è possibile che vengano visualizzati avvisi falsi positivi da questa regola:

  • Si usa Visual Studio 2022 versione 17.5 o successiva con una versione precedente di .NET SDK, ovvero .NET 6 o versioni precedenti.
  • Si usano gli analizzatori di .NET 6 SDK o una versione precedente dei pacchetti analizzatori, ad esempio Microsoft.CodeAnalysis.FxCopAnalyzers.

I falsi positivi sono dovuti a una modifica che causa un'interruzione nel compilatore C#. Prendere in considerazione l'uso di un analizzatore più recente che contiene la correzione per gli avvisi falsi positivi. Eseguire l'aggiornamento a Microsoft.CodeAnalysis.NetAnalyzers versione 7.0.0-preview1.22464.1 o successiva o usare gli analizzatori di .NET 7 SDK.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Configurare la soglia

È possibile configurare la soglia in corrispondenza della quale viene attivata questa regola e i tipi di simboli da analizzare. I tipi di simboli consentiti sono:

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. Creare un file di testo denominato CodeMetricsConfig.txt.

  2. Aggiungere la soglia desiderata al file di testo nel formato seguente:

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

    In questo esempio la regola viene configurata per l'avvio quando un metodo ha più di 60 riferimenti di tipo univoci o un tipo ha più di 120 riferimenti di tipo univoco. Con questo file di configurazione, la regola continuerà a contrassegnare campi, proprietà ed eventi il cui accoppiamento della classe è maggiore della soglia predefinita (40).

  3. Nel file di progetto contrassegnare l'azione di compilazione del file di configurazione come AdditionalFiles. Ad esempio:

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

Vedi anche