Sdílet prostřednictvím


Zahrnutí diagnostiky C++ v sadě Visual Studio

Počínaje sadou Visual Studio 17.8 vám Visual Studio pomůže analyzovat soubory C++ #include :

  • Zobrazuje, jak často a kde se používá něco z každého souboru záhlaví.
  • Zobrazí čas sestavení pro každý #include soubor– což vám pomůže identifikovat příležitosti k optimalizaci času sestavení.

Povolení diagnostiky zahrnutí C++ a CodeLens

Funkce C++ Include Diagnostics je ve výchozím nastavení vypnutá. Pokud ho chcete zapnout, kliknutím pravým tlačítkem myši v editoru kódu otevřete místní nabídku a zvolte Zapnout #include Diagnostika direktiv>Zahrnout.

Snímek obrazovky s místní nabídkou, která se zobrazí po kliknutí pravým tlačítkem myši v oblasti editoru kódu

V místní nabídce je zvýrazněná možnost zahrnout direktivy, která odhalí dvě možnosti: Direktivy Sort # include a turn # include diagnostics on.

Informace o souborech #include se zobrazí prostřednictvím CodeLensu, což je ve výchozím nastavení vypnuté. Pokud chcete zapnout příslušná nastavení CodeLens, přejděte do Textového editoru>Možností>nástroje>Všechny jazyky>CodeLens a potvrďte, že jsou povoleny odkazy na jazyk C++ #include a zobrazit časy kompilace jazyka C++.

Snímek obrazovky s oknem možností

Okno možností je nastaveno na Text Editor > Všechny jazyky > CodeLens. Možnost Zobrazit jazyk C++ # obsahuje odkazy a možnosti Zobrazit časy kompilace jazyka C++.

Zobrazení #include odkazů

Pokud chcete vyzkoušet zahrnutí diagnostiky, vytvořte nový projekt konzoly C++. Obsah hlavního .cpp souboru nahraďte následujícím kódem:

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

Pokud je zapnutá diagnostika zahrnutí jazyka C++, zobrazí se nad souborem hlavičky počet odkazů kódu ze souboru hlavičky. Vypadá to jako u předchozí ukázky kódu:

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

V editoru kódu vyberte výše 5 odkazů #include <vector> a souhrn umístění, ze <vector> kterých se kód používá v tomto souboru:

Snímek obrazovky s oknem kontextu C++ Include Diagnostics zobrazující, kde se používá kód ze souboru hlavičky vektoru

Kontextové okno kontextové diagnostiky zahrnutí jazyka C++ ukazuje, že kód ze souboru hlavičky vektoru se v aktuálním souboru kódu používá na pěti místech. Například se používá dvakrát u definice funkce add10 jako návratová hodnota a parametr. Používá se na řádku 17 v deklaraci newVec atd.

Vyberte položku, do které chcete přejít do jejího umístění v kódu.

Zobrazení #include času sestavení

Pokud chcete zobrazit čas sestavení pro každý soubor #include, nejprve sestavte pomocí Build Insights.

V hlavním řádku nabídek zapněte Build Insights tak, že vyberete Build Run Build Insights on Solution Build Insights. (Build>Run Build Insights on Solution>Build). Po dokončení sestavení se zobrazí okno se seznamem časů sestavení pro různé soubory, které jsou kompilovány. Vraťte se do okna zdrojového kódu a čas sestavení pro každý #include soubor se zobrazí v CodeLensu. Vypadá nějak takto:

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

Pokud máte direktivu #include , která se používá zřídka, ale výrazně ovlivňuje čas kompilace, může vám tento nástroj pomoct ji identifikovat.

V tomto článku jste viděli, jak zapnout diagnostiku zahrnutí C++ a CodeLens a jak pomocí diagnostiky zahrnutí jazyka C++ analyzovat, jak často se používá něco z zahrnutého souboru a jak #include ovlivňuje čas sestavení.

Viz také

Přehled vyčištění V jazyce C/C++
Zahrnout zprávy o vyčištění