Condividi tramite


Configurare la pulizia di inclusione C/C++ in Visual Studio

A partire dalla versione 17.8 Preview 1, Visual Studio può pulire #includei file per migliorare la qualità del codice C e C++ nei modi seguenti:

  • Offre di aggiungere file di intestazione per il codice che viene compilato solo perché un file di intestazione necessario è incluso indirettamente da un altro file di intestazione.
  • Offre di rimuovere i file di intestazione inutilizzati, migliorando i tempi di compilazione.

Questo articolo descrive come configurare Includi pulizia in Visual Studio. Per altre informazioni su Includi pulizia, vedere Panoramica di C/C++ Include Cleanup.

Attivare Includi pulizia

La funzionalità Includi pulizia è attivata per impostazione predefinita. Se non è attivo, è possibile attivarlo tramite Strumenti>Opzioni>Editor>di testo C/C++>Pulizia codice e selezionare Abilita pulizia #include.

Usare quindi gli elenchi a discesa per configurare la modalità di notifica delle opportunità per aggiungere intestazioni indirette o rimuovere intestazioni inutilizzate:

Finestra di dialogo Opzioni strumenti aperta in Editor > di testo Pulizia codice C/C++ > .

La casella di controllo Abilita # include cleanup è selezionata. Vengono visualizzati gli elenchi a discesa Rimuovi non usati che includono il livello di suggerimento e Aggiungi elemento mancante include il livello di suggerimento. Vengono visualizzati i contenuti dell'elenco a discesa, ovvero**Refactoring solo**, **Suggerimento**, **Avviso**e **Errore**. L'elenco a discesa **Rimuovi non usato include il livello di suggerimento** offre le stesse opzioni, ma aggiunge anche in grigio.

I significati delle opzioni del livello di suggerimento sono:

Solo refactoring: Includi pulizia offre azioni che è possibile eseguire tramite il menu azione rapida quando si passa il puntatore del mouse su un #includeo posizionare il cursore sulla #include riga e premere CTRL+punto:

Screenshot dell'azione rapida per rimuovere un'intestazione inutilizzata

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 offre azioni che possono essere eseguite tramite suggerimenti, avvisi o errori nella finestra Elenco errori. Si determina quale. Nello screenshot seguente dell'elenco errori, Includi pulizia è configurato per visualizzare le intestazioni inutilizzate con un avviso. Assicurarsi che l'opzione Build + IntelliSense sia selezionata nel filtro a discesa in modo da visualizzare l'output Includi pulizia:

Screenshot della finestra Elenco errori.

Il filtro a discesa è impostato su Build + IntelliSense. È visibile un avviso: VCIC002- #include < > iostream non viene usato in questo file."

Annuvolato

Includi Pulizia mostra le intestazioni inutilizzate eliminando la riga del file di intestazione inutilizzato nell'editor di codice. Passare il cursore sull'ombreggiatura #include per visualizzare il menu azione rapida e scegliere Mostra potenziali correzioni oppure fare clic sull'elenco a discesa lampadina per visualizzare le azioni correlate al file inutilizzato.

Screenshot di una linea < #include iostream > in grigio.

La riga per #include < > iostream è disattivata perché la riga di codice che usa iostream viene impostata come commento. Tale riga di codice è // std::cout << "charSize = " << charSize; Il menu azione rapida è visibile anche per questa riga. Indica che il > iostream #include < non viene usato in questo file e ha un collegamento a Mostra potenziali correzioni.

Configurare Includi pulizia con .editorconfig

Sono disponibili altre opzioni per configurare La pulizia di inclusione, ad esempio l'esclusione specificata da suggerimenti per la pulizia, a indicare che alcuni file di intestazione sono necessari in modo che lo strumento non li contrassegni come inutilizzati e così via. Queste opzioni sono definite in un .editorconfig file a cui è possibile aggiungere al progetto, tra le altre cose, 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 usare con Includi pulizia sono:

Impostazione Valori Esempio
cpp_include_cleanup_add_missing_error_tag_type

Imposta il livello di errore dell'aggiunta di messaggi di inclusione transitiva.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_remove_unused_error_tag_type

Imposta il livello di errore di rimozione dei messaggi di inclusione inutilizzati.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_excluded_files

Esclude i file specificati dai messaggi Includi pulizia. Non si otterrà affatto un suggerimento correlato all'intestazione, sia per aggiungerlo o che non sia inutilizzato.
filename cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
cpp_include_cleanup_required_files

Specificare che l'utilizzo di file1 richiede file2. Ad esempio, specificare che se si usa atlwin.h che altbase.h deve essere incluso anche .
file1:file2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_include_cleanup_replacement_files

Sostituisce file1 con file2 durante l'elaborazione includi pulizia. Ad esempio, è possibile preferire l'uso cstdio di rispetto stdio.ha . 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 si usa neanche il contenuto di , Includi pulizia indicherà di rimuovere entrambi.
file1:file2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_alternate_files

Non generare un messaggio per l'inclusione indiretta file2 se file1 è incluso. Ad esempio, se si #include <windows.h> usa solo un elemento dell'intestazione winerror.hinclusa indirettamente , Includi pulizia non chiederà di aggiungere winerror.h. Utile quando si preferisce includere un file di intestazione di facciata anziché l'inclusione indiretta che contiene.
file1:file2 cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h

Vedi anche

Panoramica di C/C++ Include Cleanup
Includi messaggi di pulizia