CA1052: Os tipos de suporte estático devem ser estáticos ou nãoherdáveis
Propriedade | valor |
---|---|
ID da regra | CA1052 |
Cargo | Os tipos de suporte estático devem ser Static ou NotInheritable |
Categoria | Desenho |
A correção está quebrando ou não quebrando | Quebrando |
Habilitado por padrão no .NET 8 | Não |
Causa
Um tipo não-abstrato contém apenas membros estáticos (diferentes de um possível construtor padrão) e não é declarado com o modificador estático ou compartilhado .
Por padrão, essa regra examina apenas 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, porque o tipo não fornece nenhuma funcionalidade que possa ser substituída em um tipo derivado. Um tipo que não se destina a ser herdado deve ser marcado com o static
modificador em C# para proibir seu uso como um tipo base. Além disso, seu construtor padrão deve ser removido. No Visual Basic, a classe deve ser convertida em um módulo.
Esta regra não é acionada para classes abstratas ou classes que tenham uma classe base. No entanto, a regra é acionada para classes que suportam uma interface vazia.
Nota
Na mais recente implementação desta regra pelo analisador, ela também engloba 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 é projetado para ser herdado. A ausência do
static
modificador sugere que o tipo é útil como um tipo de base. - O tipo é usado como um argumento type. Os tipos estáticos não podem ser usados como argumentos de tipo.
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 CA1052
// The code that's violating the rule is on this line.
#pragma warning restore CA1052
Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1052.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Configurar código para análise
Use a opção a seguir para configurar em quais partes da base de código executar essa regra.
Você pode configurar essa opção apenas para esta regra, para todas as regras às quais ela se aplica ou para todas as regras nesta categoria (Design) às quais ela se aplica. Para obter mais informações, consulte Opções de configuração da regra de qualidade de código.
Incluir superfícies de API específicas
Você pode configurar em quais partes da sua base de código executar essa regra, com base em sua acessibilidade. Por exemplo, para especificar que a regra deve ser executada somente na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Exemplo de uma violação
O exemplo a seguir 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
Corrigir com o modificador estático
O exemplo a seguir mostra como corrigir uma violação dessa regra marcando o tipo com o static
modificador em C#:
public static class StaticMembers
{
public static int SomeProperty { get; set; }
public static void SomeMethod() { }
}