CA1852: Tipos internos de vedação
Property | valor |
---|---|
ID da regra | CA1852 |
Título | Tipos internos de vedação |
Categoria | Desempenho |
A correção está quebrando ou não quebrando | Sem quebra |
Versão introduzida | .NET 7 |
Habilitado por padrão no .NET 9 | Não |
Motivo
Um tipo que não é acessível fora de seu assembly e não tem subtipos dentro de seu assembly que contém não está marcado sealed
(NotInheritable
no Visual Basic).
Descrição da regra
Quando um tipo não é acessível fora de sua montagem e não tem subtipos dentro de sua montagem de contenção, ele pode ser selado com segurança. Os tipos de vedação podem melhorar o desempenho. Para obter mais informações, consulte Proposta do analisador: tipos internos/privados de vedação].
Se você aplicar System.Runtime.CompilerServices.InternalsVisibleToAttribute ao assembly que está sendo analisado, essa regra não sinalizará tipos que não estão marcados como sealed
por padrão, porque um campo pode ser usado por um assembly amigo. Para analisar o assembly de qualquer maneira, consulte Configurar código para analisar.
Como corrigir violações
Marque o tipo como sealed
(NotInheritable
no Visual Basic).
Exemplo
O trecho de código a seguir mostra uma violação de CA1852:
internal class C
{ }
Class C
End Class
O trecho de código a seguir corrige a violação:
internal sealed class C
{ }
NotInheritable Class C
End Class
Quando suprimir avisos
É seguro suprimir um aviso se o desempenho não for uma preocupação.
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 CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1852.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 sua 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 (Desempenho) às quais ela se aplica. Para obter mais informações, consulte Opções de configuração da regra de qualidade de código.
Ignorar o atributo InternalsVisibleTo
Por padrão, essa regra será desabilitada se o assembly que está sendo analisado usar InternalsVisibleToAttribute para expor seus símbolos internos. Para especificar que a regra deve ser executada mesmo se o assembly estiver marcado com InternalsVisibleToAttribute, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:
dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true
Esta opção está disponível a partir do .NET 8.