CA1506: Evitar acoplamento de classes excessivo
Property | Valor |
---|---|
ID da regra | CA1506 |
Título | Evitar acoplamento de classes excessivo |
Categoria | Facilidade de manutenção |
Correção interruptiva ou sem interrupção | Quebra |
Limite padrão | Tipos: 95 Outros símbolos: 40 |
Habilitado por padrão no .NET 8 | Não |
Causa
Um tipo, método, campo, propriedade ou evento é acoplado a muitos outros tipos. Os tipos gerados pelo compilador são excluídos dessa métrica.
Descrição da regra
Essa regra mede o acoplamento de classes contando o número de referências de tipo exclusivo que um tipo, método, campo, propriedade ou evento contém. O limite de acoplamento padrão é 95 para tipos, e 40 para outros tipos de símbolo, e os limites são configuráveis.
Tipos, métodos e outros símbolos que possuem um alto grau de acoplamento de classe podem ser difíceis de manter. É uma boa prática ter tipos, métodos e outros símbolos que exibem baixo acoplamento e alta coesão.
Como corrigir violações
Para corrigir essa violação, tente reformular o tipo ou o método, para reduzir o número de tipos aos quais ela está acoplada.
Quando suprimir avisos
Você pode suprimir esse aviso quando o tipo ou método for considerado sustentável apesar de seu grande número de dependências de outros tipos.
Observação
Você pode ver avisos de falsos positivos desta regra se todos os itens a seguir se aplicarem:
- Você está usando o Visual Studio 2022 versão 17.5 ou posterior com uma versão mais antiga do SDK do .NET, ou seja, .NET 6 ou anterior.
- Você está usando os analisadores do SDK do .NET 6 ou uma versão mais antiga dos pacotes do analisador, como Microsoft. CodeAnalysis.FxCopAnalyzers.
Os falsos positivos são devido a uma alteração interruptiva no compilador de C#. Considere usar um analisador mais recente que contenha a correção para os avisos de falsos positivos. Atualize para Microsoft. CodeAnalysis.NetAnalyzers versão 7.0.0-preview1.22464.1 ou mais recente, ou use os analisadores do SDK do .NET 7.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA1506
// The code that's violating the rule is on this line.
#pragma warning restore CA1506
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1506.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Configurar limite
Você pode configurar o limite no qual essa regra é acionada e os tipos de símbolos que serão analisados. Os tipos de símbolo permitidos são:
Assembly
Namespace
Type
Method
Field
Event
Property
Crie um arquivo de texto chamado CodeMetricsConfig.txt.
Adicione o limite desejado ao arquivo de texto no seguinte formato:
CA1506(Method): 60 CA1506(Type): 120
Neste exemplo, a regra está configurada para ser acionada 4quando um método tiver mais de 60 referências de tipo exclusivo, ou um tipo tiver mais de 120 referências de tipo exclusivo. Com esse arquivo de configuração, a regra continuará a sinalizar campos, propriedades e eventos cujo acoplamento de classe seja maior que o limite padrão (40).
No arquivo de projeto, marque a ação de compilação do arquivo de configuração como AdditionalFiles. Por exemplo:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>