Sdílet prostřednictvím


CA1516: Použití vnitřních objektů pro různé platformy

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.