Configurer un projet C++ pour IntelliSense
Dans certains cas, vous devrez peut-être configurer manuellement votre projet C++ pour qu’IntelliSense fonctionne correctement. Pour les projets MSBuild (basés sur des fichiers .vcxproj), vous pouvez ajuster les paramètres dans les propriétés du projet. Pour les projets non MSBuild, vous ajustez les paramètres dans le fichier CppProperties.json dans le répertoire racine du projet. Dans certains cas, vous devrez peut-être créer un fichier d’indicateur pour aider IntelliSense à comprendre les définitions de macro. L’IDE Visual Studio vous aide à identifier et à résoudre les problèmes IntelliSense.
IntelliSense à fichier unique
Lorsque vous ouvrez un fichier qui ne fait pas partie d’un projet, Visual Studio assure une prise en charge IntelliSense, mais par défaut, aucun soulignement d’erreur ne s’affiche. Si la Barre de navigation indique Fichiers divers, cela explique probablement pourquoi le code incorrect n’est pas souligné, ou pourquoi aucune macro de préprocesseur n’est définie.
Vérifier la liste des erreurs
Si un fichier n’est pas ouvert en mode fichier unique et qu’IntelliSense ne fonctionne pas correctement, la première place à vérifier est la fenêtre Liste d’erreurs. Pour afficher toutes les erreurs IntelliSense pour le fichier source actuel avec tous les fichiers d’en-tête inclus, choisissez Build + IntelliSense dans la liste déroulante :
IntelliSense produit un maximum de 1 000 erreurs. S’il existe plus de 1 000 erreurs dans les fichiers d’en-tête inclus par un fichier source, ce dernier ne montre qu’un seul soulignement ondulé au tout début du fichier source.
Vérifiez que les chemins d’accès #include sont corrects
Projets MSBuild
Si vous exécutez vos builds en dehors de l’IDE Visual Studio et que vos builds réussissent, mais Qu’IntelliSense est incorrect, il est possible que votre ligne de commande ne soit pas synchronisée avec les paramètres du projet pour une ou plusieurs configurations. Cliquez avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions et vérifiez que tous les chemins d’accès #include sont corrects pour la configuration et la plateforme actuelles. Si les chemins d’accès sont identiques dans toutes les configurations et plateformes, vous pouvez sélectionner Toutes les configurations et Toutes les plateformes, puis vérifier que les chemins sont corrects.
Pour afficher les valeurs actuelles des macros de build telles que VC_IncludePath, sélectionnez la ligne Inclure les répertoires, puis cliquez sur la liste déroulante à droite. Ensuite, choisissez <Modifier>, puis cliquez sur le bouton Macros.
Projets Makefile
Pour les projets Makefile basés sur le modèle de projet NMake, choisissez NMake dans le volet gauche, puis choisissez Inclure le chemin de recherche sous la catégorie IntelliSense :
Projets Ouvrir un dossier
Pour les projets CMake, vérifiez que les chemins d’accès #include sont spécifiés correctement pour toutes les configurations dans CMakeLists.txt. D’autres types de projet peuvent nécessiter un fichier CppProperties.json. Pour obtenir plus d’informations, consultez Configurer IntelliSense avec CppProperties.json. Vérifiez que les chemins d’accès sont corrects pour chaque configuration définie dans le fichier.
S’il existe une erreur de syntaxe dans le fichier CppProperties.json, IntelliSense dans les fichiers concernés est incorrect. Visual Studio affiche l’erreur dans la fenêtre Sortie.
Problèmes liés à l’analyseur de balises
L’analyseur de balises est un analyseur C++ « flou » utilisé pour la navigation. Il est très rapide, mais ne tente pas de comprendre complètement chaque construction de code.
Par exemple, elle n’évalue pas les macros de préprocesseur et peut donc analyser incorrectement du code qui les utilise fortement. Lorsque l’analyseur de balises rencontre une construction de code inconnue, il peut ignorer toute la région du code.
Il existe deux façons courantes de manifester ce problème dans Visual Studio :
Si la barre de navigation montre une macro plus intérieure, la définition de fonction en cours est ignorée :
L’IDE propose de créer une définition de fonction pour une fonction déjà définie :
Pour résoudre ces types de problèmes, ajoutez un fichier nommé cpp.hint à la racine de votre répertoire de solution. Pour plus d’informations, voir Fichiers hint.
Les erreurs de l’analyseur d’étiquettes s’affichent dans la fenêtre Liste d’erreurs.
Valider les paramètres du projet avec la journalisation des diagnostics
Pour vérifier si le compilateur IntelliSense utilise des options de compilateur correctes, y compris les chemins d’accès et les macros de préprocesseur, activez la journalisation des diagnostics des lignes de commande IntelliSense dans Tools > Options > Éditeur de texte > C/C++ > Avancé > Journalisation des diagnostics. Définissez Activer la journalisation sur True, Niveau de journalisation sur 5 (le plus détaillé), et Filtre de journalisation sur 8 (journalisation IntelliSense).
La fenêtre sortie affiche désormais les lignes de commande passées au compilateur IntelliSense. Voici un exemple de sortie :
[IntelliSense] Configuration Name: Debug|Win32
[IntelliSense] Toolset IntelliSense Identifier:
[IntelliSense] command line options:
/c
/I.
/IC:\Repo\Includes
/DWIN32
/DDEBUG
/D_DEBUG
/Zc:wchar_t-
/Zc:forScope
/Yustdafx.h
Ces informations peuvent vous aider à comprendre pourquoi IntelliSense fournit des informations inexactes. Par exemple, si le répertoire Include de votre projet contient $(MyVariable)\Include, et que le journal de diagnostic affiche /I\Include en tant que chemin Include, cela signifie que $(MyVariable) n’a pas été évalué et a été supprimé du chemin d’accès include final.
À propos du build IntelliSense
Visual Studio utilise un compilateur C++ dédié pour créer et gérer la base de données qui alimente toutes les fonctionnalités IntelliSense. Pour synchroniser la base de données IntelliSense avec le code, Visual Studio lance automatiquement des builds IntelliSense uniquement en tant que tâches en arrière-plan en réponse à certaines modifications apportées dans les paramètres du projet ou les fichiers sources.
Toutefois, dans certains cas, Visual Studio peut ne pas mettre à jour la base de données IntelliSense en temps voulu. Par exemple, lorsque vous exécutez un git pull ou commande git checkout, Visual Studio peut prendre jusqu’à une heure pour détecter les modifications apportées aux fichiers. Vous pouvez forcer une nouvelle analyse de tous les fichiers d’une solution en cliquant avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions et en choisissant Rescan Solution.
Résoudre les échecs des builds IntelliSense
Une build IntelliSense ne produit pas de fichiers binaires, mais elle peut toujours échouer. Une cause possible de l’échec est des fichiers .props ou .targets personnalisés. Dans Visual Studio 2017 version 15.6 et ultérieures, les erreurs uniquement liées à IntelliSense sont enregistrées dans la Fenêtre de Sortie. Pour les afficher, définissez Afficher la sortie de sur Solution :
fenêtre de sortie
Le message d’erreur peut vous demander d’activer le traçage au moment du design :
error: Designtime build failed for project 'E:\src\MyProject\MyProject.vcxproj',
configuration 'Debug|x64'. IntelliSense might be unavailable.
Set environment variable TRACEDESIGNTIME=true and restart
Visual Studio to investigate.
Si vous définissez la variable d’environnement TRACEDESIGNTIME sur true et redémarrez Visual Studio, vous verrez un fichier journal dans le répertoire %TEMP%, ce qui peut vous aider à diagnostiquer l’échec de génération.
Pour en savoir plus sur la variable d’environnement TRACEDESIGNTIME, consultez roslyn et Common Project System. Les informations contenues dans ces articles sont pertinentes pour les projets C++.