Udostępnij za pośrednictwem


Diagnostyka dołączania języka C++ w programie Visual Studio

Począwszy od programu Visual Studio 17.8, program Visual Studio ułatwia analizowanie plików C++ #include :

  • Wyświetla, jak często i gdzie jest używany element z każdego pliku nagłówka.
  • Wyświetla czas kompilacji dla każdego #include pliku — co pomaga zidentyfikować możliwości optymalizacji czasu kompilacji.

Włączanie diagnostyki dołączania języka C++ i funkcji CodeLens

Funkcja dołączania diagnostyki języka C++ jest domyślnie wyłączona. Aby ją włączyć, kliknij prawym przyciskiem myszy w edytorze kodu, aby wyświetlić menu kontekstowe, a następnie wybierz pozycję Uwzględnij dyrektywy>Włącz #include diagnostyki.

Zrzut ekranu przedstawiający menu kontekstowe wyświetlane po kliknięciu prawym przyciskiem myszy w obszarze edytora kodu.

W menu kontekstowym jest wyróżniona opcja dołączania dyrektyw, która ujawnia dwie opcje: Sortuj dyrektywy dołączania # i włącz # dołącz diagnostykę.

Informacje o #include plikach są wyświetlane za pośrednictwem funkcji CodeLens, która jest domyślnie wyłączona. Aby włączyć odpowiednie ustawienia funkcji CodeLens, przejdź do pozycji Narzędzia>Opcje>edytora>tekstu Wszystkie języki>CodeLens i upewnij się, że oba odwołania pokaż #include języka C++ i Czas kompilacji Programu C++ są włączone.

Zrzut ekranu przedstawiający okno opcji.

Okno opcji jest ustawione na Edytor tekstu > Wszystkie języki > CodeLens. Opcje Pokaż #C++ zawierają odwołania i Pokaż czas kompilacji języka C++ są wyróżnione.

Wyświetlanie #include odwołań

Aby wypróbować dołączanie diagnostyki, utwórz nowy projekt konsoli języka C++. Zastąp zawartość pliku głównego .cpp następującym kodem:

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

Po włączeniu diagnostyki dołączania języka C++ kod z pliku nagłówka jest wyświetlany powyżej pliku nagłówka. Wygląda to podobnie do poprzedniego przykładu kodu:

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

W edytorze kodu wybierz 5 odwołań powyżej #include <vector> i podsumowanie lokalizacji, w których jest wyświetlany kod z <vector> tego pliku:

Zrzut ekranu przedstawiający okno kontekstowe Dołączanie diagnostyki języka C++, w którym jest używany kod z pliku nagłówka wektora.

Okno kontekstowe Dołączanie diagnostyki języka C++ pokazuje, że w kodzie jest używanych pięć miejsc, w których kod z pliku nagłówka wektora jest używany w bieżącym pliku kodu. Na przykład jest używany dwukrotnie w definicji funkcji add10 jako wartość zwracana i parametr. Jest on używany w wierszu 17 w deklaracji newVec itd.

Wybierz element, aby przejść do jego lokalizacji w kodzie.

Wyświetlanie #include czasu kompilacji

Aby wyświetlić czas kompilacji dla każdego pliku #include, najpierw skompiluj przy użyciu funkcji Build Insights.

Włącz pozycję Build Insights (Kompiluj szczegółowe informacje) na pasku menu głównego, wybierając pozycję Build Run Build Insights on Solution Build (Kompiluj>szczegółowe informacje o kompilacji w kompilacji rozwiązania).> Po zakończeniu kompilacji zostanie wyświetlone okno z listą czasów kompilacji dla różnych skompilowanych plików. Wróć do okna kodu źródłowego, a czas kompilacji dla każdego #include pliku jest wyświetlany w funkcji CodeLens. Wygląda podobnie do następującego:

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

Jeśli masz dyrektywę #include , która jest używana rzadko, ale ma znaczący wpływ na czas kompilacji, to narzędzie może pomóc go zidentyfikować.

W tym artykule pokazano, jak włączyć diagnostykę dołączania języka C++ i funkcję CodeLens oraz jak używać diagnostyki dołączania języka C++, aby przeanalizować, jak często coś z pliku dołączanego jest używane i jak #include wpływa na czas kompilacji.

Zobacz też

Omówienie oczyszczania dołączania języka C/C++
Uwzględnij komunikaty oczyszczania