Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Property | Value |
|---|---|
| Identyfikator reguły | CA1516 |
| Title | Używanie funkcji wewnętrznych międzyplatformowych |
| Category | Maintainability |
| Poprawka jest przełomowa lub nieprzełomowa | Non-breaking |
| Domyślnie włączone na platformie .NET 10 | No |
Cause
Funkcja wewnętrzna specyficzna dla platformy lub architektury jest używana, gdy istnieje odpowiednik międzyplatformowy.
Opis reguły
Ta reguła wykrywa użycie funkcji wewnętrznych specyficznych dla platformy, które można zastąpić równoważnymi elementami wewnętrznymi międzyplatformowymi.
Jak naprawić naruszenia
Zastosuj poprawkę, która przełącza kod, aby używać równoważnego elementu wewnętrznego międzyplatformowego.
Example
Poniższy fragment kodu przedstawia trzy podobne naruszenia 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);
}
Poniższy fragment kodu naprawia naruszenie i zostanie zastosowany przez program naprawiający:
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 zastosowaniu poprawki staje się bardziej oczywiste, że trzy metody można uprościć jako pojedynczą metodę, która działa na wszystkich platformach.
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć naruszenie tej reguły, jeśli nie martwisz się o konserwację kodu.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA1516
// The code that's violating the rule is on this line.
#pragma warning restore CA1516
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1516.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Konfigurowanie kodu do analizowania
Można skonfigurować typy zestawów wyjściowych , do których ma być stosowana ta reguła. Aby na przykład zastosować tę regułę tylko do kodu tworzącego aplikację konsolową lub dynamicznie połączoną bibliotekę (czyli nie aplikację interfejsu użytkownika), dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:
dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary
Aby uzyskać więcej informacji, zobacz output_kind.