CA2267: ファイル ベースのプログラム ディレクティブ値の空白文字を引用符で囲む

プロパティ Value
ルール識別子 CA2267
タイトル ファイル ベースのプログラム ディレクティブ値の空白を引用符で囲む
カテゴリ 使用方法
修正が破壊的か非破壊的か Non-breaking
.NET 11 で既定で有効 警告として
該当する言語 C#

原因

ファイル ベースのプログラム #: ディレクティブの値には、引用符で囲まれていない空白が含まれています。

ルールの説明

引用符で囲むことがサポートされる前は、ファイルベースのプログラムの #: ディレクティブ値内の空白は、そのまま文字どおりに解釈されていました。 このフォームは引き続き機能しますが、非推奨です。 空白を含む値を二重引用符 (") でラップし、明確に解析されるようにします。

この規則は、 #:sdk#:property#:package#:project#:ref#:include、および #:exclude ディレクティブに適用されます。 これは、値が明確でセマンティクスを保持する引用符で囲まれた同等の場合にのみ報告されるため、修正プログラムを適用してもディレクティブの意味が変わることはありません。

ファイル ベースのアプリとそのディレクティブの詳細については、「 ファイル ベースのアプリ」を参照してください。

違反を修正する方法

空白が明確に解析されるように、セマンティック値の周りに二重引用符を追加します。 プロパティの割り当て、パッケージ名、バージョンなどの複合フォームの場合は、区切り記号の後の部分を引用符で囲みます。 区切り記号の周囲に意図的な空白を引用符の外側に保持します。

Visual Studio では、ディレクティブ値を引用符で囲むコード修正を適用することもできます。

Example

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

#:property Description=Hello World

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

#:property Description="Hello World"

このコード修正では、区切り記号の周囲とディレクティブの種類とその値の間の空白が保持されます。 たとえば、次のディレクティブは名前と区切り記号を整列します。

#:property Prop  = Value
#:package  First @ 1.0

このコード修正では、その配置を変更せずに引用符が追加されます。

#:property Prop  = "Value"
#:package  First @ "1.0"

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

この警告を抑制することはお勧めしません。 引用符で囲まれたフォームは、ディレクティブ値に空白を含める方法としてサポートされており、引用符で囲まれていない形式は非推奨です。

警告を抑制する

ファイル ベースのアプリの場合は、エントリ ポイント ファイルに #:property ディレクティブを追加して、1 つの違反を抑制します。

#:property NoWarn=$(NoWarn);CA2267

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

[*.cs]
dotnet_diagnostic.CA2267.severity = none

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

こちらも参照ください