CA1506: Evitare un numero eccessivo di accoppiamenti di classi
Proprietà | valore |
---|---|
ID regola | CA1506 |
Title | Evitare un numero eccessivo di accoppiamenti tra classi |
Categoria | Manutenibilità |
La correzione causa un'interruzione o meno | Interruzione |
Soglia predefinita | Tipi: 95 Altri simboli: 40 |
Abilitato per impostazione predefinita in .NET 9 | 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
Creare un file di testo denominato CodeMetricsConfig.txt.
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).
Nel file di progetto contrassegnare l'azione di compilazione del file di configurazione come AdditionalFiles. Ad esempio:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>