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.
| Property | Value |
|---|---|
| ID da regra | CA1516 |
| Title | Use intrínsecos multiplataforma |
| Category | Maintainability |
| A correção é invasiva ou não invasiva | Non-breaking |
| Habilitado por padrão no .NET 10 | No |
Cause
Uma plataforma ou arquitetura intrínseca específica é usada quando existe um equivalente entre plataformas.
Descrição da regra
Esta regra deteta o uso de intrínsecos específicos da plataforma que podem ser substituídos por um intrínseco equivalente entre plataformas.
Como corrigir violações
Aplique o fixador que alterna o código para usar o equivalente intrínseco de plataforma cruzada.
Example
O trecho de código a seguir mostra três violações semelhantes do 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 trecho de código a seguir corrige a violação e seria aplicado pelo fixador:
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;
}
Uma vez que a correção tenha sido aplicada, torna-se mais óbvio que os três métodos poderiam ser simplificados para ser um único método que funciona em todas as plataformas.
Quando suprimir avisos
É seguro suprimir uma violação dessa regra se você não estiver preocupado com a capacidade de manutenção do seu código.
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 CA1516
// The code that's violating the rule is on this line.
#pragma warning restore CA1516
Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração .
[*.{cs,vb}]
dotnet_diagnostic.CA1516.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Configurar código para análise
Você pode configurar a quais tipos de assembly de saída aplicar essa regra. Por exemplo, para aplicar essa regra somente 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.