Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
CA1507: Použijte
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA1507 |
| Název | Použijte nameof místo řetězce |
| Kategorie | Udržovatelnost |
| Oprava, která může být destruktivní nebo nedestruktivní | Nezlomitelný |
| Povoleno ve výchozím nastavení v .NET 10 | Jako návrh |
| Příslušné jazyky | C# a Visual Basic |
Příčina
Litrál string nebo konstanta, která odpovídá názvu parametru metody, která ho obsahuje, nebo názvu vlastnosti typu, který ji obsahuje, se používá jako argument metody.
Popis pravidla
Pravidlo CA1507 označuje použití literálu string jako argumentu v metodě nebo konstruktoru, kde by použití výrazu nameof (NameOf v jazyce Visual Basic) zlepšilo udržovatelnost. Pravidlo se aktivuje, pokud jsou splněny všechny následující podmínky:
Argument je
stringliterál nebo konstanta.Argument odpovídá parametru typu
stringmetody nebo konstruktoru, který je používán (to znamená, že v místě volání není zahrnut žádný převod).Buď:
Deklarovaný název parametru je
paramNamea konstantní hodnotastringliterálu odpovídá názvu parametru metody, lambda nebo místní funkce, ve které je volána metoda nebo konstruktor.Deklarovaný název parametru je
propertyNamea konstanta literálustringodpovídá názvu vlastnosti typu, ve kterém je metoda nebo konstruktor vyvolán.
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 literál string výrazem nameof (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. Umístěte kurzor na literál string a stiskněte Ctrl+. (tečka). Zvolte Použít nameof k vyjádření názvů symbolů ze seznamu zobrazených možností.
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.