Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Property | Value |
|---|---|
| Identificador de la regla | CA1516 |
| Title | Uso de intrínsecos multiplataforma |
| Category | Maintainability |
| La corrección es disruptiva o no disruptiva | Non-breaking |
| Habilitado de forma predeterminada en .NET 10 | No |
Cause
Cuando existe un equivalente multiplataforma, se usa una plataforma o una arquitectura intrínseca específica.
Descripción de la regla
Esta regla detecta el uso de intrínsecos específicos de la plataforma que se pueden reemplazar por un intrínseco multiplataforma equivalente en su lugar.
Cómo corregir infracciones
Aplique el solucionador que cambia el código para usar el intrínseco multiplataforma equivalente.
Example
El fragmento de código siguiente muestra tres infracciones similares de 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);
}
El siguiente fragmento de código corrige la infracción y lo aplicaría el solucionador:
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;
}
Una vez aplicada la corrección, resulta más evidente que los tres métodos podrían simplificarse para ser un único método que funciona en todas las plataformas.
Cuándo suprimir las advertencias
Es seguro suprimir una infracción de esta regla si no le preocupa el mantenimiento del código.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA1516
// The code that's violating the rule is on this line.
#pragma warning restore CA1516
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su severidad none en el archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1516.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Configuración del código para analizar
Puede configurar los tipos de ensamblado de salida a los que aplicar esta regla. Por ejemplo, para aplicar esta regla solo al código que produce una aplicación de consola o una biblioteca vinculada dinámicamente (es decir, no una aplicación de interfaz de usuario), agregue el siguiente par clave-valor a un archivo .editorconfig en el proyecto:
dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary
Para obtener más información, consulte output_kind.