Partilhar via


Diagnósticos de Inclusão de C++ no Visual Studio

A partir do Visual Studio 17.8, o Visual Studio ajuda você a analisar seus arquivos C++ #include :

  • Exibe com que freqüência e onde algo de cada arquivo de cabeçalho é usado.
  • Exibe o tempo de compilação de cada #include arquivo, o que ajuda a identificar oportunidades para otimizar o tempo de compilação.

Habilitar o C++ Include Diagnostics e o CodeLens

O recurso C++ Include Diagnostics está desativado por padrão. Para ativá-lo, clique com o botão direito do mouse no editor de código para abrir o menu de contexto e escolha Incluir diretivas>Ativar #include diagnóstico.

Uma captura de tela do menu de contexto que aparece quando você clica com o botão direito do mouse na área do editor de código.

O menu de contexto mostra a opção de diretivas de inclusão realçada, que revela duas opções: Classificar # incluir diretivas e ativar # incluir diagnósticos.

As informações sobre seus #include arquivos são exibidas por meio do CodeLens, que está desativado por padrão. Para ativar as configurações relevantes do CodeLens, navegue até Ferramentas>, Opções>, Editor>de Texto, Todos os Idiomas>, CodeLens e confirme se Mostrar referências de #include C++ e Mostrar tempos de compilação C++ estão habilitados.

Uma captura de tela da janela de opções.

A janela de opções é definida como Editor de Texto > Todos os Idiomas > CodeLens. As opções Mostrar referências de inclusão # do C++ e Mostrar tempos de compilação do C++ são realçadas.

Ver #include referências

Para experimentar o Diagnóstico de Inclusão, crie um novo projeto de console C++. Substitua o conteúdo do arquivo principal .cpp pelo seguinte código:

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

Quando o Diagnóstico de Inclusão do C++ está ativado, o número de vezes que o código de um arquivo de cabeçalho é referenciado no arquivo de código atual é exibido acima do arquivo de cabeçalho. Ele se parece com isso para o exemplo de código anterior:

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

No editor de código, selecione 5 referências acima #include <vector> e um resumo dos locais onde o código de <vector> é usado neste arquivo é exibido:

Uma captura de tela da janela de contexto Diagnóstico de Inclusão do C++ mostrando onde o código do arquivo de cabeçalho de vetor é usado.

A janela de contexto Diagnóstico de Inclusão do C++ mostra que há cinco locais no código em que o código do arquivo de cabeçalho de vetor é usado no arquivo de código atual. Por exemplo, ele é usado duas vezes na definição da função add10, como um valor de retorno e parâmetro. É usado na linha 17 na declaração de newVec e assim por diante.

Selecione um item para ir para seu local em seu código.

Exibir #include tempo de compilação

Para ver o tempo de compilação de cada arquivo que você faz #include, primeiro crie usando o Build Insights.

Ative o Build Insights na barra de menus principal selecionando Build>Run Build Insights no Build da Solução.> Após a conclusão da compilação, uma janela é exibida para listar os tempos de compilação para os vários arquivos compilados. Retorne à janela de código-fonte e o tempo de compilação de cada #include arquivo será exibido no CodeLens. É semelhante a isso:

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

Se você tiver uma #include diretiva que é usada com pouca frequência, mas afeta significativamente seu tempo de compilação, essa ferramenta pode ajudá-lo a identificá-la.

Neste artigo, você viu como ativar o Diagnóstico de Inclusão do C++ e o CodeLens e como usar o Diagnóstico de Inclusão do C++ para analisar a frequência com que algo de um arquivo de inclusão é usado e como isso #include afeta o tempo de build.

Confira também

Visão geral do C/C++ Include Cleanup
Mensagens do Include Cleanup