CA1052: os tipos suportes estáticos devem ser Static ou NotInheritable
Property | Valor |
---|---|
ID da regra | CA1052 |
Título | Os tipos de suporte estático devem ser Static ou NotInheritable |
Categoria | Projetar |
Correção interruptiva ou sem interrupção | Quebra |
Habilitado por padrão no .NET 9 | Não |
Causa
Um tipo não abstrato contém apenas membros estáticos (exceto um possível construtor padrão) e não é declarado com o modificador static ou Shared.
Por padrão, essa regra apenas analisa os tipos visíveis externamente, mas isso é configurável.
Descrição da regra
A regra CA1052 pressupõe que um tipo que contém apenas membros estáticos não foi projetado para ser herdado, pois o tipo não fornece nenhuma funcionalidade que possa ser substituída em um tipo derivado. Um tipo que não é deve ser herdado deve ser marcado com o modificador static
em C# para proibir seu uso como um tipo de base. Além disso, seu construtor padrão deve ser removido. No Visual Basic, a classe deve ser convertida em um módulo.
Essa regra não é disparada para classes abstratas ou classes que têm uma classe base. No entanto, a regra é acionada para classes que dão suporte a uma interface vazia.
Observação
Na implementação mais recente do analisador dessa regra, ela também abrange a funcionalidade da regra CA1053.
Como corrigir violações
Para corrigir uma violação dessa regra, marque o tipo como static
e remova o construtor padrão (C#) ou converta-o em um módulo (Visual Basic).
Quando suprimir avisos
Você pode suprimir violações nos seguintes casos:
- O tipo foi projetado para ser herdado. A ausência do modificador
static
sugere que o tipo é útil como um tipo base. - O tipo é usado como um argumento de tipo. Tipos estáticos não podem ser usados como argumentos de tipo.
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 CA1052
// The code that's violating the rule is on this line.
#pragma warning restore CA1052
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.CA1052.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Configurar código para analisar
Use a opção a seguir para configurar em quais partes da base de código essa regra deve ser executada.
Você pode configurar essa opção apenas para essa regra, para todas as regras às quais ela se aplica ou para todas as regras nessa categoria (Design) às quais ela se aplica. Para saber mais, confira Opções de configuração de regra de qualidade de código.
Incluir superfícies de API específicas
É possível configurar em quais partes da base de código essa regra deverá ser executada, com base na acessibilidade. Por exemplo, para especificar que a regra deverá ser executada apenas na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig no projeto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Exemplo de violação
O seguinte exemplo mostra um tipo que viola a regra:
public class StaticMembers
{
public static int SomeProperty { get; set; }
public static void SomeMethod() { }
}
Imports System
Namespace ca1052
Public Class StaticMembers
Shared Property SomeProperty As Integer
Private Sub New()
End Sub
Shared Sub SomeMethod()
End Sub
End Class
End Namespace
Correção com o modificador estático
O seguinte exemplo mostra como corrigir uma violação dessa regra marcando o tipo com o modificador static
em C#:
public static class StaticMembers
{
public static int SomeProperty { get; set; }
public static void SomeMethod() { }
}