Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A partire da 17.8 Preview 1, Visual Studio può ripulire i file #include per migliorare la qualità del codice C e C++ nei seguenti modi:
- Propone di aggiungere file header al codice che viene compilato solo perché un file header necessario è incluso indirettamente da un altro file header.
- Offre di rimuovere i file di intestazione inutilizzati, migliorando i tempi di compilazione.
Questo articolo descrive come configurare Includi pulizia in Visual Studio. Per ulteriori informazioni su Include Cleanup, consulta Panoramica di Include Cleanup in C/C++.
Attiva Includi pulizia
La funzionalità Includi pulizia è disattivata per impostazione predefinita.
Attivarlo selezionando Strumenti>Opzioni> Editor >C/C++>Pulizia codice e selezionando Abilita pulizia #include.
Usa quindi gli elenchi a discesa per configurare il livello di gravità delle notifiche relative alla possibilità di aggiungere header indiretti o rimuovere header non utilizzati:
La casella di controllo **Abilita pulizia #include** è selezionata. Vengono visualizzati gli elenchi a discesa **Livello di suggerimento per la rimozione delle direttive include non utilizzate** e **Livello di suggerimento per l'aggiunta delle direttive include mancanti**. Vengono visualizzati i contenuti dell'elenco a discesa, che sono: **Solo refactoring**, **Suggerimento**, **Avviso** e **Errore**. L'elenco a discesa **Rimuovi elementi inutilizzati include il livello di suggerimento** offre le stesse opzioni, ma aggiunge anche **Dimmed**.
Queste opzioni controllano il tipo di notifica che la funzionalità Pulizia inclusioni fornisce riguardo ai file di intestazione non utilizzati:
Annuvolato
Include Cleanup mostra i file di intestazione inutilizzati attenuando la riga del file di intestazione inutilizzato nell'editor di codice e tramite un messaggio nella finestra Elenco errori. Nell'editor di codice, passa il cursore sull'elemento #include in grigio per aprire il menu delle azioni rapide e scegli Mostra possibili correzioni, oppure fai clic sul menu a discesa della lampadina per visualizzare le azioni relative al file inutilizzato.
La riga `#include < iostream >` è attenuata perché la riga di codice che usa iostream è commentata. Tale riga di codice è `// std::cout << "charSize = " << charSize;` Anche per questa riga è visibile il menu delle azioni rapide. Indica che il > iostream #include < non viene usato in questo file e ha un collegamento a Mostra potenziali correzioni.
Solo refactoring: Include Cleanup offre azioni che è possibile eseguire tramite il menu delle azioni rapide nell'editor di codice quando si passa con il puntatore del mouse su #include oppure si posiziona il cursore sulla riga #include e si preme Ctrl+.
Quando si passa il cursore su # include iostream, viene visualizzata una lampadina con il testo che # include iostream non viene usato in questo file".
Suggerimento, avviso, errore: includi pulizia può visualizzare Includi messaggi di pulizia come suggerimenti, avvisi o errori nella finestra Elenco errori . Decidi tu quale. Nello screenshot seguente di Error List, Include Cleanup è configurato per mostrare i file di intestazione non utilizzati con un avviso. Assicurarsi che l'opzione Build + IntelliSense sia selezionata nel filtro a discesa in modo da visualizzare l'output Includi pulizia:
Il filtro a discesa è impostato su **Build + IntelliSense**. Un avviso è visibile: VCIC002 - '#include
Attivarlo selezionando Strumenti>Opzioni>Tutte le impostazioni>Linguaggi>C/C++>Pulizia>codice Includi pulizia. Usa i menu a discesa per configurare come vuoi essere informato sulle opportunità di evidenziare le direttive inutilizzate #include, le direttive #include che possono essere ottimizzate (rimosse dopo aver aggiunto direttamente le inclusioni transitive necessarie) e le direttive #include mancanti incluse transitivamente.
Screenshot che mostra gli elenchi a discesa per scegliere come evidenziare un'intestazione inutilizzata nell'editor di codice, quelle che possono essere ottimizzate e quelle che sono incluse in modo transitivo.
Significato delle opzioni:
Annuvolato
Include Cleanup mostra i file di intestazione inutilizzati attenuando la riga del file di intestazione inutilizzato nell'editor di codice e con un messaggio nella finestra Elenco errori. Nell'editor di codice, passa con il cursore sull'elemento #include attenuato per visualizzare il menu delle azioni rapide e scegli Mostra possibili correzioni, oppure fai clic sul menu a discesa della lampadina, per visualizzare le azioni relative al file inutilizzato.
La riga con `#include
Nessuno: non eseguire alcuna azione. Include Cleanup offre comunque azioni che è possibile eseguire nell'editor di codice tramite il menu delle azioni rapide quando si passa il puntatore del mouse su #include oppure si posiziona il cursore sulla riga #include e si preme CTRL+.:
Suggerimento, Avviso, Errore: Include Cleanup può visualizzare i messaggi di Include Cleanup come suggerimenti, avvisi o errori nella finestra Elenco errori. Sei tu a decidere quale. Nello screenshot seguente di Elenco errori, Include Cleanup è configurato per mostrare i file di intestazione non utilizzati con un avviso. Assicurarsi che Build + IntelliSense sia selezionato nel filtro a discesa in modo da visualizzare l'output di Include Cleanup:
Il filtro a discesa è impostato su **Build + IntelliSense**. Un avviso è visibile: VCIC002 - '#include
Altre opzioni di configurazione
Altre impostazioni includi pulizia sono disponibili in Strumenti>Opzioni> Editor >C/C++>Pulizia codice:
-
Ordina le direttive include: contrassegna le direttive
#includeche devono essere ordinate. Scegliere il livello di notifica di gravità del messaggio visualizzato nella finestra Elenco errori : Nessuno (funzionalità disattivata ), Suggerimento, Avviso o Errore. -
Stile: controlla la modalità
#includedi ordinamento delle istruzioni. Scegli Ignore per ordinare senza considerare lo stile delle parentesi, Quotes per ordinare le inclusioni tra virgolette prima di quelle tra parentesi angolari oppure Angle brackets per ordinare le inclusioni tra parentesi angolari prima di quelle tra virgolette. - Con distinzione tra maiuscole e minuscole: quando è selezionata, i confronti per l'ordinamento distinguono tra maiuscole e minuscole nei nomi di file. Se non selezionata, l'ordinamento non fa distinzione tra maiuscole e minuscole.
Altre impostazioni includi pulizia sono disponibili inOpzioni>strumenti>Tutte le> delle impostazioni >C/C++>Pulizia codice>Includi pulizia:
- Filtraggio avanzato: quando è selezionato, se si chiama una funzione membro su un oggetto di una classe derivata ma la funzione è definita nella classe base, lo strumento non suggerisce di aggiungere l'header della classe base. Attivare questa opzione per ridurre i suggerimenti rumorosi quando i simboli usati provengono da classi di base anziché dal tipo a cui si fa riferimento direttamente.
- Ordina le direttive #include dopo aver apportato eventuali modifiche per la pulizia delle direttive include: se selezionata, la funzionalità predefinita per l'ordinamento delle direttive include viene eseguita dopo qualsiasi azione di pulizia delle direttive include.
- Formatta le direttive #include dopo aver apportato eventuali modifiche per la pulizia delle direttive include: se selezionata, il comando di formattazione viene eseguito dopo qualsiasi operazione di pulizia delle direttive include.
Configurare la pulizia delle inclusioni con .editorconfig
La funzionalità Includi pulizia include altre opzioni, ad esempio l'esclusione specificata da suggerimenti di pulizia e indica che alcuni file di intestazione sono necessari in modo che lo strumento non li contrassegni come inutilizzati. Definire queste opzioni in un .editorconfig file. Aggiungere questo file al progetto per applicare stili di codifica coerenti per tutti gli utenti che funzionano nella codebase. Per altre informazioni sull'aggiunta di un .editorconfig file al progetto, vedere Creare impostazioni dell'editor personalizzate portabili con EditorConfig.
Le .editorconfig impostazioni che è possibile utilizzare con Include Cleanup sono:
| Impostazione | Valori | Esempio |
|---|---|---|
cpp_include_cleanup_add_missing_error_tag_type
Imposta il livello di errore per l'aggiunta di messaggi di inclusione transitiva. |
nonesuggestionwarningerror |
cpp_include_cleanup_add_missing_error_tag_type = suggestion |
cpp_include_cleanup_alternate_files
Eliminare i messaggi per le include indirette. Ad esempio, se si #include <windows.h> e si utilizza solo il contenuto proveniente dai file di intestazione inclusi indirettamente winerror.h o minwindef.h, lo strumento non suggerisce di aggiungerli. |
file1:file2[:file3...][,file4:file5...] |
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
O cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h |
cpp_include_cleanup_excluded_files
Esclude i file specificati dai messaggi Includi pulizia. Non si riceverà alcun suggerimento correlato all'intestazione, né su come aggiungerla né se è inutilizzata. |
filename | cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h |
cpp_include_cleanup_remove_unused_error_tag_type
Imposta il livello di errore per rimuovere i messaggi di inclusione inutilizzati. |
nonesuggestionwarningerrordimmed |
cpp_include_cleanup_remove_unused_error_tag_type = dimmed |
cpp_include_cleanup_replacement_files
Sostituisce file1 con file2 durante l'elaborazione di pulizia degli include. Ad esempio, potresti preferire utilizzare cstdio anziché stdio.h. Se si dispone di un file con #include <cstdio> e #include <stdio.h> si utilizza solo il contenuto da stdio.h, con questa impostazione Includi pulizia indicherà di rimuovere stdio.h perché ha sostituito l'utilizzo di cstdio con stdio.h durante l'elaborazione. Se non utilizzi i contenuti di entrambi, Include Cleanup ti dirà di rimuoverli entrambi. |
file1:file2 | cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint |
cpp_include_cleanup_required_files
Specificare che l'utilizzo di file1 richiede file2. Ad esempio, specificare che, se si usa atlwin.h, deve essere incluso anche altbase.h. |
file1:file2 | cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h |
cpp_sort_includes_error_tag_type
Imposta il livello di errore dei messaggi di sort-includes. none disattiva la funzionalità.
suggestion mostra una ... sottolineatura a zigzag e aggiunge un messaggio all'elenco degli errori.
warning mostra una linea ondulata verde e aggiunge un avviso.
error mostra una sottolineatura rossa ondulata e segnala un errore. |
nonesuggestionwarningerror |
cpp_sort_includes_error_tag_type = suggestion |
cpp_sort_includes_priority_case_sensitive
Quando true, i confronti di ordinamento includono i nomi dei file in modo sensibile alle maiuscole/minuscole. Quando false, l'ordinamento non fa distinzione tra maiuscole e minuscole. |
truefalse |
cpp_sort_includes_priority_case_sensitive = false |
cpp_sort_includes_priority_style
Determina se l'ordinamento tiene conto dello stile delle parentesi. ignore ordina senza considerare le parentesi.
quoted l'ordinamento tra virgolette include sopra parentesi angolari.
angle_brackets ordina le inclusioni tra parentesi angolari prima di quelle tra virgolette. |
ignorequotedangle_brackets |
cpp_sort_includes_priority_style = quoted |
Le impostazioni seguenti sono disponibili a partire da Visual Studio 2026:
| Impostazione | Valori | Esempio |
|---|---|---|
cpp_include_cleanup_format_after_edits
Se impostato su true, esegue il comando di formattazione dopo qualsiasi azione Include Cleanup. Utile quando il formato clang è configurato per ordinare le #include direttive. |
truefalse |
cpp_include_cleanup_format_after_edits = true |
cpp_include_cleanup_sort_after_edits
Quando true, esegue la funzionalità integrata di ordinamento delle inclusioni dopo qualsiasi azione di pulizia delle inclusioni. Utile quando non si usa il formato clang per ordinare le #include direttive. |
truefalse |
cpp_include_cleanup_sort_after_edits = true |
Eliminare i messaggi di inclusione inutilizzati tramite codice
A partire da Visual Studio 2026, è possibile eliminare i messaggi Includi pulizia in una singola #include direttiva aggiungendo un // VCIC-Excluded commento alla stessa riga. Lo strumento di pulizia degli include non suggerisce di rimuovere quell'include, anche se sembra non utilizzato. Fornire testo di giustificazione facoltativo dopo l'indicatore in modo che i lettori futuri sappiano perché l'inclusione è presente:
#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below
È anche possibile usare il menu della lampadina per aggiungere il commento // VCIC-Excluded a una direttiva #include. Assicurarsi che Pulizia degli include sia attivata tramite Strumenti>Opzioni>Tutte le impostazioni>Linguaggi>C/C++>Pulizia del codice>Pulizia degli include, poiché è disattivata per impostazione predefinita. Passare quindi il cursore sulla #include riga, selezionare Altre correzioni>Elimina VCIC002 in source::
Il // VCIC-Excluded commento si applica solo a #include per il file. L'impostazione cpp_include_cleanup_excluded_files in .editorconfig applica tale esclusione in ogni file disciplinato da .editorconfig.
Vedi anche
Panoramica della pulizia degli include C/C++
Includi messaggi di pulizia