Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Property | Value |
|---|---|
| Identifikátor pravidla | CA1516 |
| Title | Použití vnitřních objektů pro různé platformy |
| Category | Maintainability |
| Oprava je destruktivní nebo nedestruktivní | Non-breaking |
| Povoleno ve výchozím nastavení v .NET 10 | No |
Cause
Vnitřní funkce specifická pro platformu nebo architekturu se používá, pokud existuje ekvivalent pro různé platformy.
Popis pravidla
Toto pravidlo detekuje použití vnitřních objektů specifických pro platformu, které je možné nahradit ekvivalentním vnitřním objektem pro různé platformy.
Jak opravit porušení
Použijte fixer, který přepne kód tak, aby používal ekvivalentní vnitřní objekt pro různé platformy.
Example
Následující fragment kódu ukazuje tři podobná porušení 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);
}
Následující fragment kódu opraví porušení a použije ho 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;
}
Po použití opravy je zřejmé, že tři metody by mohly být zjednodušeny jako jedna metoda, která funguje na všech platformách.
Kdy potlačit upozornění
Pokud vás nezajímá udržovatelnost kódu, je bezpečné potlačit porušení tohoto pravidla.
Potlačte upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1516
// The code that's violating the rule is on this line.
#pragma warning restore CA1516
Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .
[*.{cs,vb}]
dotnet_diagnostic.CA1516.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Konfigurace kódu pro analýzu
Můžete nakonfigurovat typy výstupních sestavení , na které se má toto pravidlo použít. Pokud například chcete toto pravidlo použít pouze na kód, který vytváří konzolovou aplikaci nebo dynamicky propojenou knihovnu (tj. ne aplikaci uživatelského rozhraní), přidejte do souboru .editorconfig v projektu následující pár klíč-hodnota:
dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary
Další informace najdete v tématu output_kind.