Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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.