Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| 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 derecesini
[*.{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.