Aracılığıyla paylaş


CA1516: Platformlar arası iç bilgileri kullanma

Property Value
Kural Kimliği CA1516
Title Platformlar arası iç bilgileri kullanma
Category Maintainability
Düzeltme kırılgan mı yoksa sağlam mı Non-breaking
.NET 10'da varsayılan olarak etkin No

Cause

Platformlar arası eşdeğeri mevcut olduğunda, platforma veya mimariye özgü iç mimari kullanılır.

Kural açıklaması

Bu kural, bunun yerine eşdeğer bir platformlar arası iç değerle değiştirilebilen platforma özgü iç özelliklerin kullanımını algılar.

İhlalleri düzeltme

Kodu eşdeğer platformlar arası iç değeri kullanacak şekilde geçişini sağlayan düzelticiyi uygulayın.

Example

Aşağıdaki kod parçacığı, CA1516'nın üç benzer ihlalini gösterir:

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

Aşağıdaki kod parçacığı ihlali düzeltir ve düzeltici tarafından uygulanır:

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

Düzeltme uygulandıktan sonra, üç yöntemin tüm platformlarda çalışan tek bir yöntem olacak şekilde basitleştirilebileceği daha belirgin hale gelir.

Uyarıların ne zaman bastırılması gerekiyor?

Kodunuzun sürdürülebilirliği konusunda endişeleriniz yoksa bu kuralın ihlalini gizlemeniz güvenlidir.

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için önem derecesiniyapılandırma dosyasında olarak ayarlayın.

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

Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.

Analiz için kodu yapılandırın

Bu kuralın uygulanacağı çıkış derleme türlerini yapılandırabilirsiniz. Örneğin, bu kuralı yalnızca konsol uygulaması veya dinamik olarak bağlı bir kitaplık (ui uygulaması değil) oluşturan koda uygulamak için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:

dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary

Daha fazla bilgi için bkz. output_kind.