次の方法で共有


CA1516: クロスプラットフォーム組み込みを使用する

Property Value
Rule ID CA1516
Title クロスプラットフォーム組み込みを使用する
Category Maintainability
修正が破壊的であるか非破壊的であるか Non-breaking
.NET 9 では既定で有効 No

Cause

プラットフォームまたはアーキテクチャ固有の組み込みは、クロスプラットフォームの同等の組み込みが存在する場合に使用されます。

Rule description

このルールは、代わりに同等のクロスプラットフォーム組み込み関数に置き換えることができるプラットフォーム固有の組み込みの使用を検出します。

違反を修正する方法

同等のクロスプラットフォーム組み込みを使用するようにコードを切り替える fixer を適用します。

Example

次のコード スニペットは、CA1516 の 3 つの同様の違反を示しています。

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

次のコード スニペットは違反を修正し、修正プログラムによって適用されます。

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

修正プログラムが適用されると、3 つのメソッドを簡略化して、すべてのプラットフォームで動作する 1 つのメソッドにすることがより明確になります。

警告を抑制するタイミング

コードの保守性が懸念されない場合は、この規則違反を抑制しても問題ありません。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

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

ファイル、フォルダー、またはプロジェクトのルールを無効にするには、設定ファイルでその重要度をnoneに設定します。

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

詳細については、「コード分析の警告を抑制する方法」を参照してください。

分析するコードを構成する

この規則を適用する 出力アセンブリの種類 を構成できます。 たとえば、コンソール アプリケーションまたは動的にリンクされるライブラリ (つまり、UI アプリではない) を生成するコードにのみこの規則を適用するには、プロジェクトの .editorconfig ファイルに次のキーと値のペアを追加します。

dotnet_code_quality.CA1516.output_kind = ConsoleApplication, DynamicallyLinkedLibrary

詳細については、「 output_kind」を参照してください。