Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Propriedade | valor |
|---|---|
| ID da regra | CA2252 |
| Título | Opte por visualizar recursos antes de usá-los |
| Categoria | Utilização |
| A correção causa interrupção ou não | Ininterrupto |
| Habilitado por padrão no .NET 10 | Como erro |
| Línguas aplicáveis | C# e Visual Basic |
Motivo
Um cliente usa APIs de pré-visualização ou tipos no seu assembly sem optar por participar explicitamente, quer a nível local, quer a nível de módulo ou assembly.
Descrição da regra
Quando uma API ou assembly decorado com o atributo RequiresPreviewFeaturesAttribute é consumido, esta regra verifica se o site de chamada optou por ativar funcionalidades de pré-visualização. Um site de chamada optou por visualizar recursos se uma das seguintes situações se aplicar:
- Está dentro do âmbito de uma
RequiresPreviewFeaturesAttributeanotação. - Ele faz parte de um assembly ou módulo que já aderiu às funcionalidades de pré-visualização.
A imagem a seguir mostra um exemplo do diagnóstico CA2252.
Aqui, Lib é um tipo de visualização que é construído no método Main.
Main em si não é anotado como um método de visualização, portanto, o diagnóstico é produzido nas duas chamadas de construtores dentro do Main.
Como corrigir violações
Há duas maneiras de corrigir violações:
Coloque um site de chamada dentro do escopo de uma anotação anotando seu pai com
RequiresPreviewFeaturesAttribute. No exemplo anterior,APreviewMethodé anotado com o atributoRequiresPreviewFeatures, portanto, o analisador ignora o uso do tipo preview dentro doAPreviewMethod. Daqui resulta que os interlocutores terão deAPreviewMethodrealizar um exercício semelhante.Você também pode optar por visualizar recursos em um nível de montagem ou módulo. Isso indica ao analisador que o uso do tipo de pré-visualização no assembly é desejado e, como consequência, esta regra não produzirá nenhum erro. Esta é a maneira preferida de consumir dependências de pré-visualização. Para habilitar recursos de visualização dentro de todo o assembly, defina a propriedade EnablePreviewFeatures em um
.csprojarquivo:
<PropertyGroup>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>
Quando suprimir avisos
A supressão de avisos dessa regra só é recomendada para casos de uso avançados em que o diagnóstico em APIs precisa ser explicitamente desabilitado. Neste caso, deves estar disposto a assumir a responsabilidade de marcar adequadamente as APIs de pré-visualização. Por exemplo, considere um caso em que um tipo existente implementa uma nova interface de visualização. Como o tipo inteiro não pode ser marcado como pré-visualização (para compatibilidade com versões anteriores), o diagnóstico relacionado à definição de tipo pode ser desativado localmente. Além disso, você precisa marcar as implementações da interface de pré-visualização como pré-visualização. Agora, o tipo existente pode ser usado como antes, mas as chamadas para os novos métodos de interface receberão diagnóstico.
System.Private.CoreLib.csproj usa essa técnica para expor recursos matemáticos genéricos em tipos numéricos como Int32, Doublee Decimal.
As imagens a seguir mostram como desativar o analisador CA2252 localmente.
Nota
Poderá ver avisos falsos positivos desta regra se se aplicarem todas as seguintes condições:
- 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.
Neste caso, é seguro suprimir um aviso falso positivo. Os falsos positivos são devidos a uma alteração incompatível no compilador C#. Considere utilizar um analisador mais recente que inclua a correção para os alertas 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 CA2252
// The code that's violating the rule is on this line.
#pragma warning restore CA2252
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA2252.severity = none
Para desativar toda essa categoria de regras, defina a severidade da categoria como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.