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

À compter de la version 17.8 Preview 1, Visual Studio peut nettoyer vos #includes pour améliorer la qualité de votre code C et C++ de la manière suivante :

  • Offre d’ajouter des fichiers d’en-tête pour le code qui se compile uniquement, car 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 Include Cleanup

La fonctionnalité Include Cleanup est activée par défaut. Si elle n’est pas active, vous pouvez l’activer via Outils>Options>Éditeur de texte>C/C++>Nettoyage du code, puis sélectionner Activer #include-cleanup.

Utilisez ensuite les listes déroulantes pour configurer la façon dont vous souhaitez être informé des opportunités d’ajout d’en-têtes indirects ou de suppression d’en-têtes inutilisés :

Boîte de dialogue Options outils ouverte dans l’Éditeur > de texte C/C++ > Nettoyage du code.

La case Enable # include clean up est cochée. Les listes déroulantes pour Supprimer les éléments inutilisés inclut le niveau de suggestion et Ajouter un élément manquant inclut le niveau de suggestion, sont affichées. Le contenu de la liste déroulante s’affiche : **Refactorisation uniquement**, **Suggestion**, **Avertissement** et **Erreur**. La liste déroulante **Supprimer les éléments inutilisés inclut le niveau de suggestion** offre les mêmes options, mais ajoute également grisé.

Les significations des options de niveau de suggestion sont les suivantes :

Refactorisation uniquement : inclut les actions d’offre de nettoyage que vous pouvez effectuer via le menu d’action rapide lorsque vous placez le pointeur de la souris sur un #include, ou placez le curseur sur la ligne #include 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 : inclut les actions d’offre de nettoyage qu’il peut effectuer via des suggestions, des avertissements ou des 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 < iostream > n’est pas utilisé dans ce fichier. »

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. Placez le curseur sur le #include grisé 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 de #include < iostream > est grisée, car la ligne de code qui utilise iostream est commentée. Cette ligne de code est // std::cout << "charSize = " << charSize ; Le menu d’action rapide 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.

Configurer Include Cleanup avec .editorconfig

Il existe d’autres options pour configurer Include Cleanup, telles que l’exclusion d’includes spécifiés à partir des suggestions de nettoyage, ce qui indique que certains fichiers d’en-tête sont requis afin que l’outil ne les marque pas comme inutilisés, etc. Ces options sont définies dans un fichier .editorconfig, que vous pouvez ajouter à votre projet pour, entre autres, appliquer des styles de codage cohérents pour tous ceux qui travaillent 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 d’ajout de messages include transitifs.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_remove_unused_error_tag_type

Définit le niveau d’erreur de suppression des messages include inutilisés.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_excluded_files

Exclut les fichiers spécifiés des messages Include Cleanup. Vous n’obtiendrez pas du tout de suggestion liée à l’en-tête, qu’il doive être ajouté ou qu’il soit inutilisé.
nom_fichier cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
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_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_alternate_files

Ne générez pas de message pour le fichier include indirectfile2 si file1 est inclus. Par exemple, si vous #include <windows.h> et utilisez uniquement un élément de son en-tête winerror.h inclus indirectement, Include Cleanup n’invite pas à ajouter winerror.h. Utile lorsque vous préférez inclure un fichier d’en-tête de façade au lieu des éléments indirects qu’il contient.
file1 :file2 cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h

Voir aussi

Vue d’ensemble d’Include Cleanup pour C/C++
Messages Include Cleanup