| 房產 | 價值 |
|---|---|
| 規則識別碼 | CA2267 |
| Title | 在檔案式程式指令值中引用空白 |
| 類別 | Usage |
| 修正是破壞性或非破壞性 | 不中斷 |
| 預設啟用於 .NET 11 | 作為警告 |
| 適用語言 | C# |
原因
以檔案為基礎的程式 #: 指令值包含未加引號的空白字元。
規則描述
在支援加上引號之前,以檔案為基礎的程式中 #: 指令值內的空白字元都會按字面原樣處理。 那種形式仍然有效,但已經被淘汰了。 將包含空白字元的值用雙引號(")括起來,以避免剖析時產生歧義。
此規則適用於 #:sdk、 #:property、 #:package、 #:include#:project#:ref和 #: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 指令來抑制單一違規。
#:property NoWarn=$(NoWarn);CA2267
若要停用檔案、資料夾或項目的規則,請在none中將其嚴重性設定為。
[*.cs]
dotnet_diagnostic.CA2267.severity = none
如需詳細資訊,請參閱 如何隱藏程式碼分析警告。