Partilhar via


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() { }
}