CA1514: 冗長な長さの引数を使用しないようにする

プロパティ
ルール ID CA1514
Title 冗長な長さの引数を使用しないようにする
[カテゴリ] 保守容易性
修正が中断ありか中断なしか なし
.NET 8 では既定で有効 提案として

原因

冗長な長さの引数は、文字列またはバッファーの末尾にスライスするときに、String.SubstringSpan<T>.SliceReadOnlySpan<T>.Slice、または Memory<T>.Slice に渡されます。

規則の説明

明示的に計算された長さの引数はエラーが発生しやすくなる場合があり、文字列またはバッファーの末尾にスライスする場合は必要ありません。

長さの引数を省略したコードは、より読みやすく保守しやすいものになります。

違反の修正方法

長さの引数を削除してください。

次のコード スニペットは、CA1514 の違反を示しています。

string message = "Hello World!";
string world = message.Substring(6, message.Length - 6); // "World!"
Dim message As String = "Hello World!"
Dim world As String = message.Substring(6, message.Length - 6) ' "World!"

次のコード スニペットでは違反を修正しています。

string message = "Hello World!";
string world = message.Substring(6); // "World!"
Dim message As String = "Hello World!"
Dim world As String = message.Substring(6) ' "World!"

どのようなときに警告を抑制するか

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

警告を抑制する

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

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

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

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

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