Lingua e regole non necessarie
Le regole del linguaggio in stile codice influiscono sul modo in cui vengono usati vari costrutti di linguaggi di programmazione .NET, ad esempio modificatori e parentesi.
Questa categoria include anche regole che identificano parti della codebase non necessarie e che possono essere refactoring o rimosse. La presenza di codice non necessario indica uno dei problemi seguenti:
- Leggibilità: codice che inutilmente degrada la leggibilità.
- Manutenibilità: il codice che non viene più usato dopo il refactoring e viene mantenuto inutilmente.
- Prestazioni: calcolo non necessario senza effetti collaterali e comporta un sovraccarico delle prestazioni non necessario.
- Funzionalità: problema funzionale nel codice che rende ridondante il codice necessario. Ad esempio, IDE0060 contrassegna i parametri inutilizzati in cui il metodo ignora accidentalmente un parametro di input.
Le regole della lingua rientrano nelle categorie seguenti:
- Regole di stile .NET: regole applicabili sia a C# che a Visual Basic. I nomi delle opzioni per queste regole iniziano con il prefisso
dotnet_style_
. - Regole di stile C#: regole specifiche del codice C#. I nomi delle opzioni per queste regole iniziano con il prefisso
csharp_style_
. - Regole di stile di Visual Basic: regole specifiche del codice Visual Basic. I nomi delle opzioni per queste regole iniziano con il prefisso
visual_basic_style_
.
Formato opzione
Molte delle regole del linguaggio hanno una o più opzioni associate per personalizzare lo stile preferito. Ad esempio, l'istruzione 'using' semplice (IDE0063) include l'opzione csharp_prefer_simple_using_statement
associata che consente di definire se si preferisce una using
dichiarazione o un'istruzione using
. La regola applica le opzioni scelte a un livello specificato, ad esempio avviso o errore.
Le opzioni per le regole della lingua possono essere specificate in un file di configurazione con il formato seguente:
option_name = value
(Visual Studio 2019 e versioni successive)
or
option_name = value:severity
valore
Per ogni regola del linguaggio, specificare un valore che definisce se o quando preferire lo stile. Molte regole accettano un valore di
true
(preferisce questo stile) ofalse
(non preferiscono questo stile). Altre regole accettano valori comewhen_on_single_line
onever
.Gravità (facoltativa in Visual Studio 2019 e versioni successive)
La seconda parte della regola specifica il livello di gravità per la regola. In .NET 9 e versioni successive, la gravità è sempre rispettata, ovvero all'interno degli IDE di sviluppo e durante le compilazioni della riga di comando. In .NET 8 e versioni precedenti questa impostazione di gravità viene rispettata solo negli IDE di sviluppo, ad esempio Visual Studio e non durante la compilazione.
Se si usa .NET 8 SDK o una versione precedente e si vuole rispettare la gravità in fase di compilazione, è possibile farlo in uno dei due modi seguenti:
- Impostare la <proprietà AnalysisLevel> o
<AnalysisLevelStyle>
su9.0
o versione successiva oppure supreview
. - Impostare la gravità usando invece la sintassi di configurazione della gravità basata su ID regola per gli analizzatori. La sintassi assume il formato
dotnet_diagnostic.<rule ID>.severity = <severity>
, ad esempiodotnet_diagnostic.IDE0040.severity = warning
. Per altre informazioni, vedere Livello di gravità.
- Impostare la <proprietà AnalysisLevel> o
Suggerimento
A partire da Visual Studio 2019, è possibile configurare le regole di stile del codice dal menu Lampadina Azioni rapide dopo che si verifica una violazione dello stile.
Indice delle regole
Le regole del linguaggio e del codice non necessarie sono ulteriormente suddivise in sottocategorie, ad esempio preferenze a livello di espressione, preferenze del blocco di codice e preferenze del modificatore.
using
preferenze di direttiva- Preferenze del blocco di codice
- Membri con corpo di espressione
- Preferenze a livello di espressione
- Preferenze dei campi
- Preferenze relative alle parole chiave del linguaggio e ai tipi di framework
- Preferenze del modificatore
- Preferenze di nuova riga
- Preferenze di controllo dei valori Null
- Preferenze per i parametri
- Preferenze per parentesi
- Preferenze di corrispondenza dei criteri
- Preferenze di eliminazione
This.
preferenze eme.
var
Preferenze
using
preferenze di direttiva
Regole di stile .NET (C# e Visual Basic):
Regole di stile C#:
- Rimuovere le direttive using non necessarie (IDE0005)
- Posizionamento della direttiva 'using' (IDE0065)
Preferenze del blocco di codice
Regole di stile C#:
- Aggiungere parentesi graffe (IDE0011)
- Usare una semplice istruzione 'using' (IDE0063)
- Preferenze di dichiarazione dello spazio dei nomi (IDE0160, IDE0161)
- Rimuovere un'espressione lambda non necessaria (IDE0200)
- Eseguire la conversione in istruzioni di primo livello (IDE0210)
- Converti in programma di stile 'Program.Main' (IDE0211)
- Usare il costruttore primario (IDE0290)
Membri con corpo di espressione
Regole di stile C#:
- Usare il corpo dell'espressione per i costruttori (IDE0021)
- Usare il corpo dell'espressione per i metodi (IDE0022)
- Usare il corpo dell'espressione per gli operatori (IDE0023, IDE0024)
- Usare il corpo dell'espressione per le proprietà (IDE0025)
- Usare il corpo dell'espressione per gli indicizzatori (IDE0026)
- Usare il corpo dell'espressione per le funzioni di accesso (IDE0027)
- Usare il corpo dell'espressione per le espressioni lambda (IDE0053)
- Usare il corpo dell'espressione per le funzioni locali (IDE0061)
Preferenze a livello di espressione
Regole di stile .NET (C# e Visual Basic):
- Semplificare il nome (IDE0001)
- Semplificare l'accesso ai membri (IDE0002)
- Rimuovere il cast non necessario (IDE0004)
- Aggiungere casi mancanti all'istruzione switch (IDE0010)
- Usare gli inizializzatori di oggetti (IDE0017)
- Usare gli inizializzatori di raccolta (IDE0028)
- Il controllo Null può essere semplificato (IDE0029, IDE0030, IDE0270)
- Usare la propagazione Null (IDE0031)
- Usare la proprietà implementata automaticamente (IDE0032)
- Usare il nome della tupla fornito in modo esplicito (IDE0033)
- Rimuovere il codice non raggiungibile (IDE0035)
- Usare i nomi dei membri dedotti (IDE0037)
- Usare il controllo 'is null' (IDE0041)
- Usare l'espressione condizionale per l'assegnazione (IDE0045)
- Usare l'espressione condizionale per return (IDE0046)
- Convertire il tipo anonimo in tupla (IDE0050)
- Rimuovere un membro privato inutilizzato (IDE0051)
- Rimuovere un membro privato non letto (IDE0052)
- Usare l'assegnazione composta (IDE0054, IDE0074)
- Rimuovere il valore dell'espressione non necessario (IDE0058)
- Rimuovere l'assegnazione di valori non necessari (IDE0059)
- Usare "System.HashCode.Combine" (IDE0070)
- Semplificare l'interpolazione (IDE0071)
- Semplificare l'espressione condizionale (IDE0075)
- Converti
typeof
innameof
(IDE0082) - Rimuovere l'operatore di uguaglianza non necessario (IDE0100)
- Semplificare l'espressione LINQ (IDE0120)
- Lo spazio dei nomi non corrisponde alla struttura di cartelle (IDE0130)
Regole di stile C#:
- Usare l'espressione throw (IDE0016)
- Dichiarazione di variabile inline (IDE0018)
- Semplificare l'espressione 'default' (IDE0034)
- Usare la funzione locale anziché lambda (IDE0039)
- Dichiarazione di variabile deconstruct (IDE0042)
- Usare l'operatore index (IDE0056)
- Usare l'operatore range (IDE0057)
- Aggiungere casi mancanti per cambiare espressione (IDE0072)
- Rimuovere l'operatore di eliminazione non necessario (IDE0080)
- Semplificare l'espressione
new
(IDE0090) - Rimuovere l'eliminazione non necessaria (IDE0110)
- Preferire il controllo "null" al controllo del tipo (IDE0150)
- Usare una tupla per scambiare valori (IDE0180)
- Aggiungere cast esplicito nel ciclo foreach (IDE0220)
- Usare un valore letterale stringa UTF-8 (IDE0230)
- La direttiva nullable è ridondante (IDE0240)
- Direttiva nullable non necessaria (IDE0241)
- Usare l'espressione di raccolta per una matrice (IDE0300)
- Usare l'espressione di raccolta per un valore vuoto (IDE0301)
- Usare l'espressione di raccolta per l'allocazione dello stack (IDE0302)
- Usare l'espressione di raccolta per
Create()
(IDE0303) - Usare l'espressione di raccolta per il generatore (IDE0304
- Usare l'espressione di raccolta per Fluent (IDE0305)
Regole di stile di Visual Basic:
- Rimuovi
ByVal
(IDE0081) - Usare criteri di ricerca ( operatore) (
IsNot
IDE0084) - Semplificare la creazione di oggetti (IDE0140)
Preferenze dei campi
Regole di stile .NET (C# e Visual Basic):
Preferenze relative alle parole chiave del linguaggio e ai tipi di framework
Regole di stile .NET (C# e Visual Basic):
Preferenze del modificatore
Regole di stile .NET (C# e Visual Basic):
Regole di stile C#:
- Rendere statica la funzione locale (IDE0062)
- Rendere scrivibili i campi struct (IDE0064)
- Lo struct può essere reso 'readonly' (IDE0250)
- Il membro può essere reso "readonly" (IDE0251)
Preferenze di nuova riga
- Consenti più righe vuote (IDE2000)
- Consenti istruzioni incorporate sulla stessa riga (IDE2001)
- Consenti righe vuote tra parentesi graffe consecutive (IDE2002)
- Istruzione Allow immediatamente dopo il blocco (IDE2003)
- Consenti riga vuota dopo i due punti nell'inizializzatore del costruttore (IDE2004)
- Consenti riga vuota dopo il token nell'espressione condizionale (IDE2005)
- Consenti riga vuota dopo il token nell'espressione freccia (IDE2006)
Preferenze di controllo dei valori Null
Regole di stile C#:
Preferenze per i parametri
Regole di stile .NET (C# e Visual Basic):
Preferenze per parentesi
Regole di stile .NET (C# e Visual Basic):
Preferenze di corrispondenza dei criteri
Regole di stile C#:
- Usare i criteri di ricerca per evitare 'as' seguito dal controllo 'null' (IDE0019)
- Usare i criteri di ricerca per evitare il controllo 'is' seguito da un cast (IDE0020, IDE0038)
- Usare l'espressione switch (IDE0066)
- Usare criteri di ricerca (IDE0078 e IDE0260)
- Usare criteri di ricerca ( operatore) (
not
IDE0083) - Semplificare il modello di proprietà (IDE0170)
Preferenze di eliminazione
Regole di stile .NET (C# e Visual Basic):
This.
preferenze e me.
Regole di stile .NET (C# e Visual Basic):
var
Preferenze
Regole di stile C#: