Definire stili di codifica coerenti con EditorConfig

Per applicare stili di codifica coerenti per tutti gli utenti che funzionano in una codebase, è possibile aggiungere un file EditorConfig alla soluzione o al progetto. Le impostazioni del file EditConfig rispettano una specifica del formato di file gestita da EditorConfig.org. Molti editor di codice e applicazioni supportano file EditorConfig, tra cui Visual Studio. Si tratta di un componente portatile che viene trasferito con il codice ed è in grado di imporre stili di codice anche all'esterno di Visual Studio.

In Visual Studio le impostazioni del file EditorConfig hanno la precedenza sulle impostazioni dell'editor di testo globale (a cui si accede selezionando Editor di testo nella finestra di dialogo Opzioni strumenti>). Ciò significa che è possibile personalizzare ogni codebase in modo che vengano usate le impostazioni dell'editor di testo specifiche del progetto. Quando si usano i file EditorConfig, è comunque possibile continuare a impostare le proprie preferenze dell'editor personale nell'editor di testo di Visual Studio. Queste impostazioni dell'editor di testo si applicano ogni volta che si lavora in una codebase senza un file EditorConfig o quando il file EditorConfig non esegue l'override di una determinata impostazione. Un esempio di tale preferenza è se usare tabulazioni o spazi per lo stile del rientro del codice.

Quando si aggiunge un file EditorConfig al progetto in Visual Studio, solo le nuove righe di codice vengono formattate in base alle impostazioni di EditorConfig. La formattazione del codice esistente non viene modificata a meno che non si esegua uno dei comandi seguenti:

  • Pulizia del codice.

    Selezionare Pulizia codice nell'editor di Visual Studio oppure premere CTRL+K, CTRL+E. Questo comando si applica alle impostazioni dello spazio vuoto, ad esempio lo stile di rientro e le impostazioni di stile del codice selezionate, ad esempio le preferenze di parentesi.

  • Formato documento.

    Selezionare Modifica>documento formato avanzato>oppure premere CTRL+K, CTRL+D nel profilo predefinito. Questo comando si applica solo alle impostazioni dello spazio vuoto, ad esempio lo stile del rientro.

Nota

Questo argomento si applica a Visual Studio per Windows. Per Visual Studio per Mac, vedere Creazione e modifica di un file EditorConfig personalizzato in Visual Studio per Mac.

Coerenza del codice

Le impostazioni del file EditorConfig consentono di mantenere stili e convenzioni di codifica coerenti in una codebase, indipendentemente dall'editor o dall'IDE usato. Alcuni stili di codifica che è possibile controllare sono stile di rientro, larghezza della scheda, caratteri di fine riga e codifica. Ad esempio, se la codebase C# ha una convenzione che imposta un rientro che usa cinque caratteri di spazio, i documenti usano la codifica UTF-8 e le righe terminano con CR/LF, è possibile configurare un file EditorConfig per usare questa convenzione.

I file EditorConfig sono utili quando le convenzioni di codifica usate nei progetti personali differiscono da quelle convenzioni usate nei progetti del team. Ad esempio, è possibile preferire che un rientro aggiunga un carattere di tabulazione nel codice. Tuttavia, il team potrebbe preferire che un rientro aggiunga quattro spazi. I file EditorConfig risolvono questo problema consentendo di avere una configurazione per ogni scenario.

Poiché un file con estensione editorconfig nella codebase contiene le impostazioni editorConfig, vengono spostate insieme a tale codebase. Se si apre il file di codice in un editor conforme a EditorConfig, le impostazioni dell'editor di testo vengono attivate.

Nota

Le convenzioni impostate in un file EditorConfig non possono essere applicate in una pipeline CI/CD come errori o avvisi di compilazione. Tutte le deviazioni di stile vengono visualizzate solo nell'editor di Visual Studio e in Elenco errori.

Impostazioni supportate

L'editor in Visual Studio supporta il set di base delle proprietà di EditorConfig:

  • indent_style
  • indent_size
  • tab_width
  • end_of_line
  • charset
  • trim_trailing_whitespace
  • insert_final_newline
  • root

EditorConfig supporta tutti i linguaggi supportati da Visual Studio, ad eccezione delle impostazioni dell'editor EditorConfig per il supporto XML.

EditorConfig supporta convenzioni di stile del codice, tra cui linguaggio, formattazione e convenzioni di denominazione per C# e Visual Basic.

Aggiungere e rimuovere i file EditorConfig

Quando si aggiunge un file EditorConfig al progetto o alla codebase, Visual Studio formatta tutte le nuove righe di codice scritte in base alle impostazioni del file EditorConfig. Tuttavia, Visual Studio non converte gli stili esistenti nei nuovi fino a quando non si formatta il documento o si esegue Pulizia codice. Ad esempio, se i rientri nel file vengono formattati con le schede e si aggiunge un file EditorConfig che formatta i rientri con spazi, i caratteri di rientro non vengono convertiti automaticamente in spazi. Quando si formatta il documento (selezionare Modifica>documento formato avanzato>o premere CTRL K, CTRL++D), le impostazioni dello spazio vuoto nel file EditorConfig vengono applicate alle righe di codice esistenti.

Se si rimuove un file EditorConfig dal progetto o dalla codebase, è necessario chiudere e riaprire tutti i file di codice aperti per le impostazioni dell'editor globale per rendere effettive nuove righe di codice.

Aggiungere un file EditorConfig a un progetto

Per aggiungere un file EditorConfig al progetto o alla soluzione, seguire questa procedura:

  1. Aprire un progetto o una soluzione in Visual Studio. Selezionare la soluzione o il nodo del progetto, a seconda che le impostazioni di EditorConfig vengano applicate a tutti i progetti nella soluzione o solo a uno. È anche possibile selezionare una cartella del progetto o della soluzione alla quale aggiungere il file con estensione editorconfig.

  2. Scegliere Progetto>Aggiungi nuovo elemento dal menu oppure premere CTRL+MAIUSC+A.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento .

  3. Nella casella di ricerca immettere editorconfig.

    Nei risultati della ricerca verranno visualizzati due modelli di elemento File editorconfig.

    Screenshot che mostra i modelli di elemento di file EditorConfig in Visual Studio.

  4. Selezionare il modello file editorconfig (vuoto) per aggiungere un file EditorConfig precompilato con opzioni EditorConfig predefinite per spazi vuoti, stile del codice e convenzioni di denominazione. In alternativa, selezionare il modello file editorconfig (.NET) per aggiungere un file EditorConfig precompilato con spazi vuoti .NET predefiniti , stile del codice e convenzioni di denominazione.

    Un nuovo file con estensione editorconfig viene visualizzato in Esplora soluzioni, che viene aperto nell'editor come nuova scheda.

    Screenshot che mostra il file con estensione editorconfig in Esplora soluzioni ed editor.

  5. Facoltativamente, modificare il file e salvarlo.

Altri modi per aggiungere un file EditorConfig

Esistono due altri modi per aggiungere un file EditorConfig al progetto:

  • Usare IntelliCode per Visual Studio per generare un file con estensione editorconfig nella soluzione. Fare clic con il pulsante destro del mouse in Esplora soluzioni e scegliere Aggiungi>nuovo editorConfig (IntelliCode) dal menu di scelta rapida. IntelliCode per Visual Studio deduce gli stili di codice dal codice esistente e quindi crea un file EditorConfig con le preferenze di stile del codice predefinite.

  • Generare automaticamente un file EditorConfig in base alle impostazioni in stile codice.

Precedenza e gerarchia dei file

Quando si aggiunge un file con estensione editorconfig a una cartella nella gerarchia di file, le relative impostazioni si applicano a tutti i file applicabili a quel livello e inferiore. È anche possibile eseguire l'override delle impostazioni di EditorConfig per un particolare progetto, codebase o parte di una codebase, in modo da usare convenzioni diverse rispetto ad altre parti della codebase. Questa operazione può essere utile quando si incorpora il codice da un'altra posizione e non si vogliono modificare le convenzioni.

Segui queste linee guida:

  • Per eseguire l'override di alcune o di tutte le impostazioni di EditorConfig, aggiungere un file con estensione editorconfig a livello della gerarchia di file in cui si vuole applicare l'override delle impostazioni. Le nuove impostazioni del file EditorConfig si applicano ai file allo stesso livello e ai file in qualsiasi sottodirectory.

    Screenshot che mostra la gerarchia EditorConfig.

  • Se si desidera eseguire l'override di alcune impostazioni, ma non tutte le impostazioni, specificare solo tali impostazioni nel file con estensione editorconfig . Vengono sostituite solo le proprietà elencate in modo esplicito nel file con estensione editorconfig di livello inferiore. Le altre impostazioni di qualsiasi file con estensione editorconfig di livello superiore continuano a essere applicate.

  • Se si desidera assicurarsi che nessuna impostazione di qualsiasi file con estensione editorconfig di livello superiore venga applicata a questa parte della codebase, aggiungere la root=true proprietà al file con estensione editorconfig di livello inferiore.

    # top-most EditorConfig file for this level
    root = true
    

I file EditorConfig vengono letti dall'alto verso il basso. Se sono presenti più proprietà con lo stesso nome, la proprietà trovata più di recente con lo stesso nome ha la precedenza.

Modificare i file EditorConfig

Visual Studio 2022 fornisce un editor visivo per i file EditorConfig.

Dopo aver modificato il file EditorConfig, è necessario ricaricare i file di codice per rendere effettive le nuove impostazioni.

Visual Studio consente di modificare i file EditorConfig fornendo elenchi di completamento IntelliSense. Ad esempio:

Screenshot che mostra IntelliSense in un file EditorConfig.

Se si modificano molti file EditorConfig, potrebbe risultare utile l'estensione del servizio di linguaggio EditorConfig. Alcune delle funzionalità di questa estensione sono evidenziazione della sintassi, IntelliSense migliorato, convalida e formattazione di codice.

Screenshot che mostra IntelliSense con l'estensione del servizio di linguaggio EditorConfig.

Esempio

L'esempio seguente illustra lo stato di rientro di un frammento di codice C# prima e dopo l'aggiunta di un file EditorConfig al progetto:

  1. Nella finestra di dialogo Opzioni strumenti>impostare le impostazioni editor di testo>C#>Tabs per l'editor di testo di Visual Studio per produrre quattro caratteri di spazio quando si preme tabulazioni.

    Screenshot che mostra l'impostazione della scheda Editor di testo.

  2. Come previsto, quando si preme TAB nella riga successiva, la riga rientra aggiungendo quattro caratteri di spazio vuoto.

    Screenshot che mostra il tasto Tab che aggiunge spazi nel codice.

    Screenshot che mostra il tasto Tab che aggiunge spazi nel codice.

  3. Usare EditorConfig per cambiare l'impostazione delle schede in modo da usare le schede.

    Selezionare Usa schede nel file EditorConfig.

    Screenshot che mostra la configurazione dell'uso delle schede per il tasto TAB.

    Aggiungere un nuovo file denominato .editorconfig al progetto, con il contenuto seguente. L'indicatore [*.cs] indica che questa modifica si applica solo ai file di codice C# nel progetto.

    # Top-most EditorConfig file
    root = true
    
    # Tab indentation
    [*.cs]
    indent_style = tab
    
  4. Quando si preme tabulazioni, i caratteri di tabulazioni vengono visualizzati invece di spazi.

    Screenshot che mostra il tasto Tab che aggiunge caratteri di tabulazioni nel codice.

    Screenshot che mostra il tasto Tab che aggiunge caratteri di tabulazioni nel codice.

Risolvere i problemi relativi alle impostazioni di EditorConfig

Se un file EditorConfig esiste in qualsiasi punto della struttura di directory in corrispondenza o sopra il percorso del progetto, Visual Studio applica le impostazioni dell'editor nel file all'editor. In questo caso, nella barra di stato potrebbe essere visualizzato il messaggio seguente:

User preferences for this file type are overridden by this project's coding conventions.

Ciò significa che se le impostazioni dell'editor nell'editordi testo Opzioni>strumenti>(ad esempio le dimensioni del rientro e lo stile, le dimensioni delle schede o le convenzioni di codifica) vengono specificate in un file EditorConfig in corrispondenza o sopra il progetto nella struttura di directory, le convenzioni nel file EditorConfig sostituiscono le impostazioni nell'editor di testo.

Per risolvere i problemi di EditorConfig, seguire questa procedura:

  1. Per disattivare il supporto di EditorConfig per Visual Studio, deselezionare l'opzione Segui convenzioni di codifica del progetto in Strumenti>Opzioni>editor di testo.

    Screenshot che mostra l'impostazione per Seguire le convenzioni di codifica del progetto.

  2. Per trovare tutti i file EditorConfig nelle directory padre del progetto, aprire un prompt dei comandi ed eseguire il comando seguente dalla radice del disco che contiene il progetto.

    dir .editorconfig /s
    
  3. Per controllare l'ambito delle convenzioni editorConfig, impostare la root=true proprietà nel file con estensione editorconfig nella radice del repository o nella directory in cui risiede il progetto.

    Visual Studio cerca un file con estensione editorconfig nella directory del file aperto e in tutte le directory padre. La ricerca termina quando si raggiunge il filepath radice o se viene trovato un file con estensione editorconfig con root=true.