CA2267: Umieść białe znaki w cudzysłowie w wartościach dyrektywy programu opartego na plikach

Majątek Value
Identyfikator reguły CA2267
Title Ujmij w cudzysłów wartości zawierające białe znaki w dyrektywach programu opartych na plikach
Kategoria Użycie
Poprawka jest przełomowa lub nieprzełomowa Non-breaking
Domyślnie włączone w .NET 11 Jako ostrzeżenie
Zastosowane języki C#

Przyczyna

Wartość dyrektywy programu opartej na pliku #: zawiera białe znaki nieujęte w cudzysłów.

Opis reguły

Zanim obsługiwano ujęcie w cudzysłów, białe znaki w wartości dyrektywy #: w programie opartym na plikach były interpretowane dosłownie. Ta forma nadal działa, ale jest przestarzała. Ujmuj wartości zawierające białe znaki w podwójny cudzysłów ("), aby były interpretowane jednoznacznie.

Ta reguła ma zastosowanie do dyrektyw #:sdk, #:property, #:package, #:ref, #:project, #:include i #:exclude. Jest raportowane tylko wtedy, gdy wartość ma jednoznaczny odpowiednik ujęty w cudzysłów, który zachowuje semantykę, dzięki czemu zastosowanie poprawki nigdy nie zmienia znaczenia dyrektywy.

Aby uzyskać więcej informacji na temat aplikacji opartych na plikach i ich dyrektyw, zobacz Aplikacje oparte na plikach.

Jak naprawić naruszenia

Dodaj podwójne cudzysłowy wokół wartości semantycznej, aby białe znaki były interpretowane jednoznacznie. W przypadku form złożonych, takich jak przypisanie właściwości lub nazwa pakietu oraz wersja, ujmij w cudzysłów część po separatorze. Zachowaj wszelkie zamierzone odstępy wokół separatora poza cudzysłowami.

W programie Visual Studio można również zastosować poprawkę kodu Dodaj cudzysłowy wokół wartości dyrektywy.

Example

Poniższy fragment kodu pokazuje naruszenie CA2267.

#:property Description=Hello World

Poniższy fragment kodu naprawia naruszenie.

#:property Description="Hello World"

Poprawka w kodzie zachowuje odstępy wokół separatorów oraz między typem dyrektywy a jej wartością. Na przykład poniższe dyrektywy wyrównują nazwy i separatory:

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

Poprawka kodu dodaje cudzysłowy bez zmiany tego wyrównania:

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

Kiedy pomijać ostrzeżenia

Nie zaleca się pomijania tego ostrzeżenia. Forma ujęta w cudzysłów jest obsługiwanym sposobem umieszczania białych znaków w wartości dyrektywy, a forma bez cudzysłowu jest wycofywana z użycia.

Pomijanie ostrzeżenia

W przypadku aplikacji opartych na plikach wyłącz pojedyncze naruszenie, dodając dyrektywę #:property do pliku punktu wejścia.

#:property NoWarn=$(NoWarn);CA2267

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz także