CA1507: Použití nameof
místo řetězce
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1507 |
Název | Použití nameof místo řetězce |
Kategorie | Udržovatelnost |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako návrh |
Příčina
Literál string
nebo konstanta, která odpovídá názvu parametru obsahující metody nebo názvu vlastnosti obsahujícího typu, se používá jako argument metody.
Popis pravidla
Pravidlo CA1507 označuje použití literálu string
jako argument metody nebo konstruktoru, kde by název výrazu (NameOf
v jazyce Visual Basic) přidal udržovatelnost. Pravidlo se aktivuje, pokud jsou splněny všechny následující podmínky:
Argument je
string
literál nebo konstanta.Argument odpovídá parametru
string
-typed metody nebo konstruktoru, který je vyvolán (to znamená, že v lokalitě volání není zahrnut žádný převod).Buď:
Deklarovaný název parametru je
paramName
a konstantní hodnotastring
literálu odpovídá názvu parametru metody, lambda nebo místní funkce, ve které je volána metoda nebo konstruktor.Deklarovaný název parametru a
propertyName
konstantní hodnotastring
literálu odpovídá názvu vlastnosti typu, ve kterém je vyvolána metoda nebo konstruktor.
Pravidlo CA1507 zlepšuje udržovatelnost kódu v případech, kdy se parametr může v budoucnu přejmenovat, ale string
literál se omylem nepřejmenuje. Pokud použijete nameof
, symbol se přejmenuje při přejmenování parametru prostřednictvím operace refaktoringu. Kromě toho kompilátor zachytí všechny pravopisné chyby v názvu parametru.
Jak opravit porušení
Chcete-li opravit porušení, nahraďte string
literál názvem (NameOf
v jazyce Visual Basic). Například následující dva fragmenty kódu ukazují porušení pravidla a postup jeho opravy:
public Book(string title)
{
// Violates rule CA1507
Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
public Book(string title)
{
// Resolves rule CA1507 violation
Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}
Tip
Oprava kódu je k dispozici pro toto pravidlo v sadě Visual Studio. Pokud ho string
chcete použít, umístěte kurzor na literál a stiskněte ctrl+. (tečka). Pokud chcete vyjádřit názvy symbolů ze seznamu zobrazených možností, zvolte Použít název.
Kdy potlačit upozornění
Pokud vás nezajímá udržovatelnost kódu, je bezpečné potlačit porušení tohoto pravidla.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA1507.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.