Compartir vía


Inclusión de diagnósticos de C++ en Visual Studio

A partir de Visual Studio 17.8, Visual Studio le ayuda a analizar los archivos de C++ #include :

  • Muestra la frecuencia y dónde se usa algo de cada archivo de encabezado.
  • Muestra el tiempo de compilación de cada #include archivo, lo que le ayuda a identificar oportunidades para optimizar el tiempo de compilación.

Habilitación de C++ Include Diagnostics y CodeLens

La característica Incluir diagnóstico de C++ está desactivada de forma predeterminada. Para activarlo, haga clic con el botón derecho en el editor de código para abrir el menú contextual y elija Incluir directivas>Activar #include Diagnóstico.

Captura de pantalla del menú contextual que aparece al hacer clic con el botón derecho en el área del editor de código.

El menú contextual muestra la opción incluir directivas resaltadas, que revela dos opciones: Directivas de inclusión de Sort # y activar # incluir diagnósticos.

La información sobre los #include archivos se muestra a través de CodeLens, que está desactivada de forma predeterminada. Para activar la configuración de CodeLens pertinente, vaya a Opciones de herramientas>Editor>>de texto Todos los lenguajes>CodeLens y confirme que se habilitan las referencias #include Mostrar referencias de C++ y Mostrar tiempos de compilación de C++.

Captura de pantalla de la ventana de opciones.

La ventana de opciones se establece en Editor de texto > Todos los idiomas > CodeLens. Las opciones Mostrar C++ # incluyen referencias y Mostrar tiempos de compilación de C++ se resaltan.

Ver #include referencias

Para probar Incluir diagnósticos, cree un nuevo proyecto de consola de C++. Reemplace el contenido del archivo principal .cpp por el código siguiente:

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

Cuando se activa el diagnóstico de inclusión de C++, se hace referencia al número de veces que se hace referencia al código de un archivo de encabezado en el archivo de código actual encima del archivo de encabezado. Tiene este aspecto para el ejemplo de código anterior:

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

En el editor de código, seleccione 5 referencias anteriores #include <vector> y se muestra un resumen de las ubicaciones desde las que se usa código en <vector> este archivo:

Captura de pantalla de la ventana de contexto Incluir diagnóstico de C++ que muestra dónde se usa el código del archivo de encabezado vectorial.

La ventana Incluir diagnóstico de C++ muestra que hay cinco lugares en el código donde se usa el código del archivo de encabezado vectorial en el archivo de código actual. Por ejemplo, se usa dos veces en la definición de la función add10, como un valor devuelto y un parámetro. Se usa en la línea 17 en la declaración de newVec, etc.

Seleccione un elemento para ir a su ubicación en el código.

Visualización del tiempo de #include compilación

Para ver el tiempo de compilación de cada archivo, #includeprimero cree con Build Insights.

Active Build Insights en la barra de menús principal; para ello, seleccione Build Run Build Insights on Solution Build Build (Compilar información>de ejecución de compilación) en Solution Build (Compilar información de compilación en la compilación de la solución).> Una vez completada la compilación, aparece una ventana para enumerar los tiempos de compilación de los distintos archivos que se compilan. Vuelva a la ventana de código fuente y el tiempo de compilación de cada #include archivo se muestra en CodeLens. Tiene un aspecto similar al siguiente:

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

Si tiene una #include directiva que se usa con poca frecuencia, pero afecta significativamente al tiempo de compilación, esta herramienta puede ayudarle a identificarla.

En este artículo, ha visto cómo activar Diagnósticos de inclusión de C++ y CodeLens, y cómo usar Diagnósticos de inclusión de C++ para analizar la frecuencia con la que se usa algo de un archivo de inclusión y cómo #include afecta al tiempo de compilación.

Consulte también

Introducción a la limpieza de directivas include de C/C++
Mensajes de limpieza de directivas include