Configurer Include Cleanup pour C/C++ dans Visual Studio

À partir de la version 17.8 Preview 1, Visual Studio peut nettoyer les fichiers que vous #include pour améliorer la qualité de votre code C et C++ des manières suivantes :

  • Propose d’ajouter des fichiers d’en-tête pour le code qui se compile uniquement parce qu’un fichier d’en-tête nécessaire est inclus indirectement par un autre fichier d’en-tête.
  • Propose de supprimer les fichiers d’en-tête inutilisés, ce qui améliore les temps de génération.

Cet article explique comment configurer Include Cleanup dans Visual Studio. Pour plus d’informations sur Include Cleanup, consultez la vue d’ensemble de Include Cleanup pour C/C++.

Activer le nettoyage inclus

La fonctionnalité Include Cleanup est désactivée par défaut.

Activez-le en sélectionnantl’Éditeur> de texteOptions>outils>C/C++>Nettoyage du code et en sélectionnant Activer #include nettoyage.

Utilisez ensuite les listes déroulantes pour configurer la gravité des notifications sur les opportunités d’ajout d’en-têtes indirects ou de suppression d’en-têtes inutilisés :

La boîte de dialogue Options s’est ouverte sur Éditeur de texte > C/C++ > Nettoyage du code.

La case **Activer le nettoyage des #include** est cochée. Les listes déroulantes pour **Niveau de suggestion pour supprimer les directives include inutilisées** et **Niveau de suggestion pour ajouter les directives include manquantes** sont affichées. Le contenu de la liste déroulante s’affiche : **Refactorisation uniquement**, **Suggestion**, **Avertissement** et **Erreur**. La liste déroulante **Supprimer inutilisée inclut le niveau de suggestion** offre les mêmes options, mais ajoute également **Dimmed**.

Ces options contrôlent le type de notification que la fonctionnalité Include Cleanup fournit sur les en-têtes inutilisés :

Grisé

Include Cleanup affiche les en-têtes inutilisés en grisant la ligne du fichier d’en-tête inutilisé dans l’éditeur de code et avec un message dans la fenêtre Liste d’erreurs . Dans l’éditeur de code, pointez votre curseur sur le menu d’action grisé #include pour afficher le menu d’action rapide et choisissez Afficher les correctifs potentiels, ou cliquez sur la liste déroulante de l’ampoule pour afficher les actions liées au fichier inutilisé.

Capture d’écran d’une ligne iostream < #include > grisée.

La directive #include < iostream > apparaît grisée, car la ligne de code qui utilise iostream est mise en commentaire. Cette ligne de code est // std::cout << "charSize = " << charSize; Le menu des actions rapides est également visible pour cette ligne. Il indique #include < iostream > n’est pas utilisé dans ce fichier. Il comprend un lien pour afficher les correctifs potentiels.

Refactorisation uniquement : Inclure les actions de nettoyage que vous pouvez effectuer via le menu d’action rapide dans l’éditeur de code lorsque vous pointez le pointeur de la souris sur un #include, ou placez le curseur sur la #include ligne et appuyez sur Ctrl+point :

Capture d’écran de l’action rapide pour supprimer un en-tête inutilisé.

Lorsque vous pointez le curseur sur # include iostream, une ampoule s’affiche avec le texte # include iostream n’est pas utilisé dans ce fichier. »

Suggestion, Avertissement, Erreur : Inclure le nettoyage peut afficher les messages de nettoyage comme suggestions, avertissements ou erreurs dans la fenêtre Liste d’erreurs . Vous déterminez lesquelles. Dans la capture d’écran suivante de la liste d’erreurs, Include Cleanup est configuré pour afficher les en-têtes inutilisés avec un avertissement. Vérifiez que Build + Intellisense est sélectionné dans le filtre de liste déroulante afin de voir la sortie Include Cleanup :

Capture d’écran de la fenêtre Liste d’erreurs.

Le filtre de liste déroulante est défini sur **Build + IntelliSense**. Un avertissement est visible : VCIC002 - « #include » n’est pas utilisé dans ce fichier. »

Activez-le en sélectionnant Outils>Options>Tous les paramètres>Langages>C/C++>Nettoyage de code>Nettoyage des inclusions. Utilisez les listes déroulantes pour configurer la façon dont vous souhaitez être averti des possibilités de mise en évidence des directives #include inutilisées, des directives #include qui peuvent être optimisées (supprimées après l’ajout direct de leurs inclusions transitives requises) et des directives #include manquantes incluses transitivement.

Capture d’écran de la boîte de dialogue Options ouverte sur Tous les paramètres > Langages > C/C++ > Nettoyage du code > Nettoyage des inclusions.

Capture d’écran montrant les listes déroulantes pour choisir comment mettre en surbrillance un en-tête inutilisé dans l’éditeur de code, celles qui peuvent être optimisées et celles qui sont incluses de manière transitive.

Signification des options :

Grisé

Include Cleanup affiche les en-têtes inutilisés en grisant la ligne du fichier d’en-tête inutilisé dans l’éditeur de code et en tant que message dans la fenêtre Liste d’erreurs . Dans l’éditeur de code, pointez votre curseur sur le menu d’action grisé #include pour afficher le menu d’action rapide et choisissez Afficher les correctifs potentiels, ou cliquez sur la liste déroulante de l’ampoule pour afficher les actions liées au fichier inutilisé.

Capture d’écran d’une ligne iostream < #include > grisée.

La ligne `#include ` est grisée, car la ligne de code qui utilise `iostream` est commentée. Cette ligne de code est la suivante : `// std::cout << "charSize = " << charSize;`. Le menu action rapide est également visible pour cette ligne. Il indique que le « #include » n’est pas utilisé dans ce fichier et a un lien vers **Afficher les correctifs potentiels**.

Aucun : n’effectuez aucune action. Include Cleanup propose toujours des actions que vous pouvez effectuer dans l’éditeur de code via le menu d’actions rapides lorsque vous survolez un #include, ou placez le curseur sur la ligne #include et appuyez sur Ctrl+point :

Suggestion, Avertissement, Erreur : Inclure le nettoyage peut afficher les messages de nettoyage comme suggestions, avertissements ou erreurs dans la fenêtre Liste d’erreurs. Vous déterminez lesquelles. Dans la capture d’écran suivante de la liste d’erreurs, Include Cleanup est configuré pour afficher les en-têtes inutilisés avec un avertissement. Vérifiez que Build + Intellisense est sélectionné dans le filtre de liste déroulante afin de voir la sortie Include Cleanup :

Capture d’écran de la fenêtre Liste d’erreurs.

Le filtre de liste déroulante est défini sur **Build + IntelliSense**. Un avertissement est visible : VCIC002 - « #include » n’est pas utilisé dans ce fichier. »

Autres options de configuration

D’autres paramètres de Nettoyage des inclusions sont disponibles dans Outils>Options>Éditeur de texte>C/C++>Nettoyage du code :

  • Tri des inclusions : signale les directives #include devant être triées. Choisissez le niveau de notification de gravité du message qui s’affiche dans la fenêtre Liste d’erreurs : Aucun (fonctionnalité désactivée), Suggestion, Avertissement ou Erreur.
  • Style : contrôle la façon dont #include les instructions sont triées. Choisissez Ignorer pour trier sans tenir compte du type de délimiteurs, Guillemets pour trier les inclusions entre guillemets avant celles entre chevrons, ou Chevrons pour trier les inclusions entre chevrons avant celles entre guillemets.
  • Sensible à la casse : lorsque cette option est sélectionnée, le tri compare les noms de fichiers en tenant compte de la casse. Lorsqu’elle est désactivée, le tri est insensible à la casse.

Capture d’écran de Visual Studio Options avec filtrage avancé, Trier après les modifications, Trier inclut, Priorité de tri, Style et Paramètres sensibles à la casse mis en surbrillance.

D’autres paramètres de nettoyage des inclusions sont disponibles sous Outils>Options>Tous les paramètres>Langages>C/C++>Nettoyage du code>Nettoyage des inclusions :

  • Filtrage avancé : si vous appelez une fonction membre sur un objet de classe dérivée, mais que la fonction est définie dans la classe de base, l’outil ne suggère pas d’ajouter l’en-tête de classe de base. Activez cette option pour réduire les suggestions bruyantes lorsque les symboles que vous utilisez proviennent de classes de base plutôt que du type que vous référencez directement.
  • Triez les directives #include après avoir effectué des modifications pour le nettoyage des inclusions : lorsque cette option est sélectionnée, la fonctionnalité intégrée de tri des inclusions s’exécute après toute opération de nettoyage des inclusions.
  • Mettre en forme les directives #include après toute modification liée au nettoyage des directives include : lorsque cette option est sélectionnée, la commande de mise en forme s’exécute après toute opération de nettoyage des directives include.

Capture d’écran de Visual Studio Inclure les options de nettoyage avec les paramètres avancés de filtrage, de tri et de format mis en surbrillance.

Configurer le nettoyage des inclusions avec .editorconfig

La fonctionnalité Include Cleanup propose plus d’options, telles que l’exclusion spécifiée des suggestions de nettoyage et l’indication que certains fichiers d’en-tête sont requis afin que l’outil ne les marque pas comme inutilisés. Définissez ces options dans un .editorconfig fichier. Ajoutez ce fichier à votre projet pour appliquer des styles de codage cohérents pour tout le monde qui fonctionne dans le codebase. Pour plus d’informations sur l’ajout d’un fichier .editorconfig à votre projet, consultez Créer des paramètres d’éditeur portables et personnalisés avec EditorConfig.

Les paramètres .editorconfig que vous pouvez utiliser avec Include Cleanup sont les suivants :

Paramètre Valeurs Exemple
cpp_include_cleanup_add_missing_error_tag_type

Définit le niveau d’erreur pour ajouter des messages include transitif.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_alternate_files

Supprimer les messages pour les inclusions indirectes. Par exemple, si vous #include <windows.h> et utilisez uniquement du contenu provenant de ses fichiers d’en-tête inclus indirectement winerror.h ou minwindef.h, l’outil ne suggère pas de les ajouter.
file1 :file2[ :file3...][,file4 :file5...] cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
Ou
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h
cpp_include_cleanup_excluded_files

Exclut les fichiers spécifiés des messages Include Cleanup. Vous n’obtiendrez aucune suggestion liée à l’en-tête, qu’il s’agisse de l’ajouter ou qu’il ne soit pas utilisé.
nom_fichier cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
cpp_include_cleanup_remove_unused_error_tag_type

Définit le niveau d’erreur pour supprimer les messages include inutilisés.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_replacement_files

Remplace fichier1 par fichier2 pendant le traitement Include Cleanup. Par exemple, vous pouvez préférer utiliser cstdio plutôt que stdio.h. Si vous avez un fichier avec #include <cstdio> et #include <stdio.h>, et que vous consommez du contenu uniquement à partir de stdio.h, avec ce paramètre Include Cleanup vous indique de supprimer stdio.h, car il a remplacé l’utilisation de cstdio par stdio.h pendant le traitement. Si vous n’utilisez le contenu d’aucun des deux, Include Cleanup vous indique de supprimer les deux.
file1 :file2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_required_files

Spécifiez que l’utilisation de file1 nécessite file2. Par exemple, spécifiez que si vous utilisez atlwin.h, altbase.h doit également être inclus.
file1 :file2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_sort_includes_error_tag_type

Définit le niveau d’erreur des messages sort-includes. none désactive la fonctionnalité. suggestion affiche un ... soulignement ondulé et ajoute un message à la liste d’erreurs. warning affiche un soulignement ondulé vert et ajoute un avertissement. error affiche une bascule rouge et ajoute une erreur.
none
suggestion
warning
error
cpp_sort_includes_error_tag_type = suggestion
cpp_sort_includes_priority_case_sensitive

Lorsque true, le tri compare les noms de fichiers de manière sensible à la casse. Quand false, le tri ne respecte pas la casse.
true
false
cpp_sort_includes_priority_case_sensitive = false
cpp_sort_includes_priority_style

Contrôle si le tri prend en compte le style entre crochets. ignore trie sans tenir compte des crochets. quoted trie les inclusions entre guillemets avant les inclusions entre chevrons. angle_brackets trie les crochets angle inclut les guillemets ci-dessus.
ignore
quoted
angle_brackets
cpp_sort_includes_priority_style = quoted

Les paramètres suivants sont disponibles à partir de Visual Studio 2026 :

Paramètre Valeurs Exemple
cpp_include_cleanup_format_after_edits

Lorsque true, exécute la commande de formatage après toute action de nettoyage des inclusions. Utile lorsque vous avez configuré le format clang pour trier vos #include directives.
true
false
cpp_include_cleanup_format_after_edits = true
cpp_include_cleanup_sort_after_edits

Quand true, exécute la fonctionnalité de tri intégrée après une action Include Cleanup. Utile lorsque vous n’utilisez pas le format clang pour trier vos #include directives.
true
false
cpp_include_cleanup_sort_after_edits = true

Supprimer les messages d’include inutilisé via le code

À partir de Visual Studio 2026, vous pouvez masquer les messages Include Cleanup pour une seule directive #include en ajoutant un commentaire // VCIC-Excluded sur la même ligne. L’outil Include Cleanup ne suggère pas de supprimer cet élément, même s’il n’apparaît pas utilisé. Fournissez un texte de justification facultatif après le marqueur afin que les futurs lecteurs sachent pourquoi l’inclure est là :

#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below

Vous pouvez également utiliser le menu de l’ampoule pour ajouter le commentaire // VCIC-Excluded à une directive #include. Assurez-vous que le nettoyage des inclusions est activé via Outils>Options>Tous les paramètres>Langages>C/C++>Nettoyage du code>Nettoyage des inclusions, car il est désactivé par défaut. Placez ensuite le curseur sur la #include ligne, sélectionnez Autres correctifs>supprimer VCIC002 dans la source ::

Capture d’écran de Visual Studio montrant le menu de l’ampoule, avec l’option « Supprimer l’avertissement VCIC002 dans la source ».

Le // VCIC-Excluded commentaire s’applique uniquement au #include fichier. La définition cpp_include_cleanup_excluded_files dans .editorconfig applique cette exclusion dans chaque fichier régi par le .editorconfig.

Voir aussi

Vue d’ensemble d’Include Cleanup pour C/C++
Inclure les messages de nettoyage