C++ Include Diagnostics in Visual Studio

Ab Visual Studio 17.8 hilft Ihnen Visual Studio beim Analysieren Ihrer C++- #include Dateien:

  • Zeigt an, wie oft und wo etwas aus jeder Headerdatei verwendet wird.
  • Zeigt die Buildzeit für jede #include Datei an, die Ihnen hilft, Möglichkeiten zur Optimierung der Buildzeit zu identifizieren.

Aktivieren von C++ Include Diagnostics and CodeLens

Das Feature "C++-Diagnose einschließen" ist standardmäßig deaktiviert. Zum Aktivieren klicken Sie mit der rechten Maustaste im Code-Editor, um das Kontextmenü anzuzeigen, und wählen Sie "Direktiven>aktivieren" aus, um #include Diagnose einzuschalten.

A screenshot of the context menu that appears when you right-click in the code editor area.

Im Kontextmenü wird die Option "Direktiven einschließen" hervorgehoben, wodurch zwei Optionen angezeigt werden: "Sortieren # enthalten Direktiven" und "Turn # include" Diagnose ein.

Informationen zu Ihren #include Dateien werden standardmäßig über CodeLens angezeigt. Um die relevanten CodeLens-Einstellungen zu aktivieren, navigieren Sie zum Tools>Options>Text Editor>All Languages>CodeLens, und bestätigen Sie, dass sowohl C++-#include Verweise anzeigen als auch C++-Kompilierungszeiten aktiviert sind.

A screenshot of the options window.

Das Optionsfenster ist auf den Text-Editor > alle Sprachen > CodeLens festgelegt. Die Option "C++ anzeigen" enthält Verweise und Optionen für die C++-Kompilierungszeit anzeigen.

Anzeigen von #include Verweisen

Um die Include Diagnostics auszuprobieren, erstellen Sie ein neues C++-Konsolenprojekt. Ersetzen Sie den Inhalt der datei Standard .cpp durch den folgenden Code:

#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); 
}

Wenn C++ Include Diagnostics aktiviert ist, wird der Code aus einer Headerdatei in der aktuellen Codedatei oberhalb der Headerdatei angezeigt. Es sieht wie folgt für das vorherige Codebeispiel aus:

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

Wählen Sie im Code-Editor oben #include <vector> fünf Verweise und eine Zusammenfassung der Speicherorte aus, an <vector> denen Code aus dieser Datei verwendet wird:

A screenshot of the C++ Include Diagnostics context window showing where code from the vector header file is used.

Das Kontextfenster "C++-Diagnose einschließen" zeigt, dass es fünf Stellen im Code gibt, an denen Code aus der Vektorheaderdatei in der aktuellen Codedatei verwendet wird. Beispielsweise wird sie zweimal für die Definition der Add10-Funktion als Rückgabewert und Parameter verwendet. Er wird in Zeile 17 in der Deklaration von newVec usw. verwendet.

Wählen Sie ein Element aus, um zu seinem Speicherort im Code zu wechseln.

Erstellungszeit anzeigen #include

Um die Buildzeit für jede Datei anzuzeigen, die Sie #includezuerst mit Build Insights erstellen.

Aktivieren Sie Build Insights über die Menüleiste Standard, indem Sie ">Build Insights für Projektmappenbuild> ausführen" auswählen. Nach Abschluss des Builds wird ein Fenster angezeigt, in dem die Buildzeiten für die verschiedenen kompilierten Dateien aufgeführt werden. Kehren Sie zum Quellcodefenster zurück, und die Buildzeit für jede #include Datei wird in CodeLens angezeigt. Es sieht ähnlich wie folgt aus:

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

Wenn Sie eine #include Richtlinie haben, die selten verwendet wird, sich aber erheblich auf die Kompilierzeit auswirkt, kann dieses Tool Ihnen dabei helfen, sie zu identifizieren.

In diesem Artikel haben Sie erfahren, wie Sie C++ Include Diagnostics and CodeLens aktivieren und wie Sie C++ Include Diagnostics verwenden, um zu analysieren, wie oft etwas aus einer Includedatei verwendet wird und wie sich die #include Buildzeit auswirkt.

Siehe auch

Übersicht über die C/C++-Include-Bereinigung
Meldungen der Include-Bereinigung