Delen via


CA1516: Platformoverschrijdende intrinsiek gebruiken

Property Value
Rule ID CA1516
Title Platformoverschrijdende intrinsieke kenmerken gebruiken
Category Maintainability
De oplossing veroorzaakt brekende of niet-brekende problemen Non-breaking
Standaard ingeschakeld in .NET 9 No

Cause

Een platform of architectuurspecifieke intrinsieke waarde wordt gebruikt wanneer er een platformoverschrijdend equivalent bestaat.

Rule description

Deze regel detecteert het gebruik van platformspecifieke intrinsieke kenmerken die kunnen worden vervangen door een equivalent platformoverschrijdend intrinsieke waarde.

Hoe schendingen op te lossen

Pas de fixer toe waarmee de code wordt overgeschakeld om gebruik te maken van de equivalente platformoverschrijdende intrinsieke waarde.

Example

In het volgende codefragment ziet u drie vergelijkbare schendingen van 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);
}

Het volgende codefragment lost de schending op en wordt toegepast door de fixer:

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;
}

Zodra de fix is toegepast, wordt het duidelijker dat de drie methoden kunnen worden vereenvoudigd als één methode die op alle platforms werkt.

Wanneer waarschuwingen onderdrukken

Het is veilig om een schending van deze regel te onderdrukken als u zich geen zorgen maakt over de onderhoudbaarheid van uw code.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable CA1516
// The code that's violating the rule is on this line.
#pragma warning restore CA1516

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA1516.severity = none

Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.

Code configureren om te analyseren

U kunt configureren op welke uitvoerassemblytypen deze regel moet worden toegepast. Als u deze regel bijvoorbeeld alleen wilt toepassen op code die een consoletoepassing of een dynamisch gekoppelde bibliotheek produceert (dus geen UI-app), voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:

dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary

Zie output_kind voor meer informatie.