Partilhar via


CA1506: Evite o acoplamento excessivo de classes

Propriedade valor
ID da regra CA1506
Cargo Evitar o acoplamento excessivo de classes
Categoria Manutenibilidade
A correção está quebrando ou não quebrando Quebrando
Limiar por defeito 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

Esta regra mede o acoplamento de classes contando o número de referências de tipo exclusivas 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ímbolos, e os limites são configuráveis.

Tipos, métodos e outros símbolos que têm 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 redesenhar o tipo ou método para reduzir o número de tipos aos quais ele está acoplado.

Quando suprimir avisos

Você pode suprimir esse aviso quando o tipo ou método é considerado sustentável, apesar de seu grande número de dependências em outros tipos.

Nota

Poderá ver avisos falsos positivos desta regra se todas as seguintes situações 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 devidos a uma mudança de quebra no compilador C#. Considere o uso de 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

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar 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 para um arquivo, pasta ou projeto, defina sua severidade como none no arquivo de configuração.

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

Para obter mais informações, consulte 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 a serem analisados. Os tipos de símbolos permitidos são:

  • Assembly
  • Namespace
  • Type
  • Method
  • Field
  • Event
  • Property
  1. Crie um arquivo de texto chamado CodeMetricsConfig.txt.

  2. Adicione o limite desejado ao arquivo de texto no seguinte formato:

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

    Neste exemplo, a regra é configurada para ser acionada quando um método tem mais de 60 referências de tipo exclusivas ou um tipo tem mais de 120 referências de tipo exclusivas. Com esse arquivo de configuração, a regra continuará a sinalizar campos, propriedades e eventos cujo acoplamento de classe é maior do que o limite padrão (40).

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

Consulte também