Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Property | Value |
|---|---|
| ID da regra | CA1516 |
| Title | Usar intrínsecos multiplataforma |
| Category | Maintainability |
| Correção é disruptiva ou não disruptiva | Non-breaking |
| Habilitado por padrão no .NET 10 | No |
Cause
Uma plataforma ou arquitetura específica intrínseca é usada quando existe um equivalente de plataforma cruzada.
Descrição da regra
Essa regra detecta o uso de intrínsecos específicos da plataforma que podem ser substituídos por um intrínseco de plataforma cruzada equivalente.
Como corrigir violações
Aplique o corrigidor que alterna o código para usar o intrínseco multiplataforma equivalente.
Example
O snippet de código a seguir mostra três violações semelhantes da CA1516:
using System;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.Arm;
using System.Runtime.Intrinsics.Wasm;
using System.Runtime.Intrinsics.X86;
class C
{
Vector128<byte> M1(Vector128<byte> x, Vector128<byte> y) => AdvSimd.Add(x, y);
Vector128<byte> M2(Vector128<byte> x, Vector128<byte> y) => Sse2.Add(x, y);
Vector128<byte> M3(Vector128<byte> x, Vector128<byte> y) => PackedSimd.Add(x, y);
}
O snippet de código a seguir corrige a violação e seria aplicado pelo corrigidor:
using System;
using System.Runtime.Intrinsics;
class C
{
Vector128<byte> M1(Vector128<byte> x, Vector128<byte> y) => x + y;
Vector128<byte> M2(Vector128<byte> x, Vector128<byte> y) => x + y;
Vector128<byte> M3(Vector128<byte> x, Vector128<byte> y) => x + y;
}
Depois que a correção tiver sido aplicada, torna-se mais óbvio que os três métodos podem ser simplificados para serem um único método que funcione em todas as plataformas.
Quando suprimir avisos
Será seguro suprimir uma violação dessa regra se você não estiver preocupado com a manutenção do código.
Suprimir um aviso
Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.
#pragma warning disable CA1516
// The code that's violating the rule is on this line.
#pragma warning restore CA1516
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.CA1516.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Configurar código para analisar
Você pode configurar a quais tipos de assembly de saída aplicar essa regra. Por exemplo, para aplicar essa regra apenas ao código que produz um aplicativo de console ou uma biblioteca vinculada dinamicamente (ou seja, não um aplicativo de interface do usuário), adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:
dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary
Para obter mais informações, consulte output_kind.