Включение диагностики C++ в Visual Studio
Начиная с Visual Studio 17.8, Visual Studio помогает анализировать файлы C++ #include
:
- Отображает, как часто и где используется что-то из каждого файла заголовка.
- Отображает время сборки для каждого
#include
файла, которое помогает определить возможности оптимизации времени сборки.
Включение диагностики c++ и CodeLens
Функция диагностики включения C++ отключена по умолчанию. Чтобы включить его, щелкните правой кнопкой мыши в редакторе кода, чтобы открыть контекстное меню, и выберите "Включить директивы>включения" #include диагностики.
В контекстном меню выделен параметр "Директивы включения", который показывает два варианта: сортировка директив и включение диагностика.
Сведения о #include
файлах отображаются через CodeLens, который по умолчанию отключен. Чтобы включить соответствующие параметры CodeLens, перейдите к разделу "Параметры>>текста редактора>всех языков>CodeLens" и убедитесь, что включены ссылки на C++ #include и показать время компиляции C++.
В окне параметров задано значение Text Editor > All Languages > CodeLens. Выделены параметры времени компиляции show C++ и Show C++.
Просмотр #include
ссылок
Чтобы попробовать включить диагностику, создайте проект консоли C++ . Замените содержимое основного .cpp
файла следующим кодом:
#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);
}
Если включена диагностика включения C++, количество раз кода из файла заголовка отображается в текущем файле кода над файлом заголовка. Выглядит следующим образом для предыдущего примера кода:
6 references
#include <iostream>
5 references
#include <vector>
В редакторе кода выберите 5 ссылок выше #include <vector>
и сводку расположений, где <vector>
код используется в этом файле:
В окне контекста диагностики C++ показано, что в коде, где код из файла заголовка вектора используется в текущем файле кода. Например, он используется дважды в определении функции add10 в качестве возвращаемого значения и параметра. Он используется в строке 17 в объявлении newVec и т. д.
Выберите элемент, чтобы перейти к его расположению в коде.
Просмотр #include
времени сборки
Чтобы просмотреть время сборки для каждого файла #include
, сначала выполните сборку с помощью Build Insights.
Включите Build Insights в главной строке меню, выбрав команду Build>Run Build Insights в сборке решения>. После завершения сборки появится окно, в которое выводится список времени сборки для различных скомпилированных файлов. Вернитесь в окно исходного кода, а время сборки для каждого #include
файла отображается в CodeLens. Похоже на следующее:
6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>
Если у вас есть #include
директива, которая используется редко, но значительно влияет на время компиляции, это средство поможет вам определить его.
В этой статье вы узнали, как включить диагностику и codeLens на C++, а также как использовать диагностику включения C++ для анализа частоты использования файла включения и того, как #include
влияет время сборки.