Partager via


C++ Inclure des diagnostics dans Visual Studio

À compter de Visual Studio 17.8, Visual Studio vous aide à analyser vos fichiers C++ #include :

  • Affiche la fréquence et l’emplacement d’utilisation de chaque fichier d’en-tête.
  • Affiche l’heure de génération de chaque #include fichier, ce qui vous permet d’identifier les opportunités d’optimisation de votre temps de génération.

Activer C++ Include Diagnostics et CodeLens

La fonctionnalité Include Diagnostics C++ est désactivée par défaut. Pour l’activer, cliquez avec le bouton droit dans l’éditeur de code pour afficher le menu contextuel, puis choisissez Inclure les directives>Activer #include Diagnostics.

Capture d’écran du menu contextuel qui s’affiche lorsque vous cliquez avec le bouton droit dans la zone de l’éditeur de code.

Le menu contextuel affiche l’option include directives mise en surbrillance, qui révèle deux options : Trier # inclure des directives et activer # inclure des diagnostics.

Les informations sur vos #include fichiers sont affichées via CodeLens, qui est désactivée par défaut. Pour activer les paramètres CodeLens appropriés, accédez à l’Éditeur>de texte Options>outils>Tous les langages>CodeLens et vérifiez que les références de #include C++ et afficher les heures de compilation C++ sont activées.

Capture d’écran de la fenêtre options.

La fenêtre options est définie sur Éditeur de texte > Toutes les langues > CodeLens. Les options Afficher C++ # incluent les références et les options Afficher les heures de compilation C++sont mises en surbrillance.

Afficher les #include références

Pour essayer Include Diagnostics, créez un projet de console C++. Remplacez le contenu du fichier principal .cpp par le code suivant :

#include <iostream>
#include <vector>

// a function that takes a vector of integers and prints them out
void print(std::vector<int> &vec)
{
    for (int i : vec)
    {
        std::cout << i << std::endl;
    }
    std::cout << std::endl;
}

// a function that takes a vector of integers and adds 10 to each element of the vector and store the result in a new vector
std::vector<int> add10(std::vector<int>& vec)
{
    std::vector<int> newVec;
    for (int i : vec)
    {
        newVec.push_back(i + 10);
    }
    return newVec;
}

int main()
{
    std::vector<int> vec = { 7, 5, 16, 8 };

    print(vec);
    auto newVec = add10(vec);
    print(newVec); 
}

Lorsque les diagnostics Include C++ sont activés, le nombre de fois où le code d’un fichier d’en-tête est référencé dans le fichier de code actuel s’affiche au-dessus du fichier d’en-tête. Il ressemble à ceci pour l’exemple de code précédent :

6 references
#include <iostream>
5 references
#include <vector>

Dans l’éditeur de code, sélectionnez 5 références ci-dessus #include <vector> et un résumé des emplacements d’utilisation du <vector> code dans ce fichier :

Capture d’écran de la fenêtre de contexte Include Diagnostics C++ montrant où le code du fichier d’en-tête de vecteur est utilisé.

La fenêtre de contexte Include Diagnostics C++ indique qu’il existe cinq emplacements dans le code où le code du fichier d’en-tête de vecteur est utilisé dans le fichier de code actuel. Par exemple, il est utilisé deux fois sur la définition de la fonction add10, comme valeur de retour et paramètre. Il est utilisé sur la ligne 17 dans la déclaration de newVec, et ainsi de suite.

Sélectionnez un élément pour accéder à son emplacement dans votre code.

Afficher l’heure #include de génération

Pour voir l’heure de génération de chaque fichier que vous #includecréez, commencez par générer à l’aide de Build Insights.

Activez Build Insights dans la barre de menus principale en sélectionnant Build>Run Build Insights on Solution>Build Build. Une fois la build terminée, une fenêtre apparaît pour répertorier les heures de génération des différents fichiers compilés. Revenez à la fenêtre de code source et l’heure de génération de chaque #include fichier s’affiche dans CodeLens. Il ressemble à ceci :

6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>

Si vous avez une #include directive qui est utilisée rarement, mais a un impact significatif sur votre temps de compilation, cet outil peut vous aider à l’identifier.

Dans cet article, vous avez vu comment activer C++ Include Diagnostics et CodeLens, et comment utiliser C++ Include Diagnostics pour analyser la fréquence d’utilisation d’un fichier Include et l’impact sur le #include temps de génération.

Voir aussi

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