Sdílet prostřednictvím


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í hodnota string 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í hodnota string 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.

Oprava kódu pro CA1507 – použití nameof k vyjádření názvů symbolů

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.

Viz také