CA1507: usare nameof
al posto della stringa
Proprietà | valore |
---|---|
ID regola | CA1507 |
Title | Usare nameof al posto della stringa |
Categoria | Manutenibilità |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | Come suggerimento |
Causa
Un string
valore letterale o costante che corrisponde al nome di un parametro del metodo contenitore o il nome di una proprietà del tipo contenitore viene utilizzato come argomento per un metodo.
Descrizione regola
La regola CA1507 contrassegna l'uso di un string
valore letterale come argomento per un metodo o un costruttore in cui un'espressione nameof (NameOf
in Visual Basic) aggiungerà manutenibilità. La regola viene attivata se vengono soddisfatte tutte le condizioni seguenti:
L'argomento è un
string
valore letterale o costante.L'argomento corrisponde a un
string
parametro tipizzato del metodo o al costruttore richiamato, ovvero non è presente alcuna conversione nel sito di chiamata.Uno dei seguenti:
Il nome dichiarato del parametro è
paramName
e il valore costante delstring
valore letterale corrisponde al nome di un parametro del metodo, dell'espressione lambda o della funzione locale in cui viene richiamato il metodo o il costruttore.Il nome dichiarato del parametro è
propertyName
e il valore costante delstring
valore letterale corrisponde al nome di una proprietà del tipo all'interno del quale viene richiamato il metodo o il costruttore.
La regola CA1507 migliora la manutenibilità del codice nei casi in cui il parametro può essere rinominato in futuro, ma il string
valore letterale non viene erroneamente rinominato. nameof
Usando , il simbolo verrà rinominato quando il parametro viene rinominato tramite un'operazione di refactoring. Inoltre, eventuali errori di ortografia nel nome del parametro vengono rilevati dal compilatore.
Come correggere le violazioni
Per correggere una violazione, sostituire il string
valore letterale con un'espressione nameof (NameOf
in Visual Basic). Ad esempio, i due frammenti di codice seguenti mostrano una violazione della regola e come risolverli:
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.");
}
Suggerimento
Una correzione del codice è disponibile per questa regola in Visual Studio. Per usarlo, posizionare il cursore sul string
valore letterale e premere CTRL+. (punto). Scegliere Usa nameof per esprimere i nomi dei simboli dall'elenco di opzioni presentate.
Quando eliminare gli avvisi
È possibile eliminare una violazione di questa regola se non si è preoccupati per la manutenibilità del codice.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA1507.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.