Partilhar via


Configurar o C/C++ Include Cleanup no Visual Studio

A partir do 17.8 Versão Prévia 1, o Visual Studio pode limpar os #includes para melhorar a qualidade do código C e C++ das seguintes maneiras:

  • Oferece a adição de arquivos de cabeçalho para código que é compilado apenas porque um arquivo de cabeçalho necessário foi incluído indiretamente por outro arquivo de cabeçalho.
  • Oferece a remoção de arquivos de cabeçalho não utilizados, melhorando os tempos de compilação.

Este artigo descreve como configurar o Include Cleanup no Visual Studio. Para obter mais informações sobre o Include Cleanup, confira Visão geral do C/C++ Include Cleanup.

Ativar o Include Cleanup

O recurso Include Cleanup está ativado por padrão. Se ele não estiver ativo, você poderá ativá-lo em Ferramenta>Opções>Editor de Texto>C/C++>Limpeza de Código e selecionar Habilitar #include cleanup.

Em seguida, use as listas suspensas para configurar como você deseja ser notificado sobre oportunidades de adicionar cabeçalhos indiretos ou remover cabeçalhos não utilizados:

A caixa de diálogo Opções de ferramentas foi aberta na Limpeza de Código C/C++ > do Editor > de Texto.

A caixa de seleção Habilitar #include cleanup está marcada. As listas suspensas para o Nível de sugestão de remoção de inclusões não utilizadas e o Nível de sugestão de adição de inclusões ausentes são mostradas. O conteúdo da lista suspensa é mostrado, que inclui: **Somente refatoração**, **Sugestão**, **Aviso** e **Erro**. O menu suspenso do **Nível de sugestão de remoção de inclusões não utilizadas** oferece as mesmas opções, mas também adiciona o esmaecido.

Os significados das opções de nível de sugestão são:

Somente refatoração: o Include Cleanup oferece ações que você pode executar através do menu de ação rápida, quando você passa o ponteiro do mouse sobre um #include ou coloca o cursor sobre a linha #include e pressione Ctrl+ponto:

Uma captura de tela da ação rápida para remover um cabeçalho não utilizado

Ao passar o cursor sobre # include iostream, uma lâmpada aparece com o texto indicando que # include iostream não foi utilizado neste arquivo."

Sugestão, Aviso, Erro: o Include Cleanup oferece ações que podem ser executadas por meio de sugestões, avisos ou erros na janela Lista de Erros. Você determina qual. Na captura de tela a seguir da Lista de Erros, a opção Include Cleanup foi configurada para mostrar os cabeçalhos não utilizados com um aviso. Verifique se Compilar + Intellisense está selecionada no filtro do menu suspenso para que você possa ver a saída do Include Cleanup:

Uma captura de tela da janela Lista de Erros.

O filtro do menu suspenso está definido como Compilar + IntelliSense. Um aviso está visível: VCIC002 – #include < iostream > não foi utilizado neste arquivo."

Esmaecido

O Include Cleanup mostra os cabeçalhos não utilizados escurecendo a linha do arquivo de cabeçalho não utilizado no editor de códigos. Passe o cursor sobre o #include esmaecido para abrir o menu de ação rápida e escolha Mostrar possíveis correções ou clique no menu suspenso da lâmpada para ver as ações relacionadas ao arquivo não utilizado.

Uma captura de tela de uma linha iostream > #include < esmaecida.

A linha para #include < iostream > está esmaecida porque a linha de código que usa o iostream foi comentada. Essa linha de código é // std::cout << "charSize = " << charSize; O menu de ação rápida também está visível para essa linha. Ela indica que o #include < iostream > não foi utilizado neste arquivo e tem um link para Mostrar possíveis correções.

Configurar o Include Cleanup com .editorconfig

Há mais opções para configurar o Include Cleanup, como excluir inclusões especificadas das sugestões de limpeza, indicando que alguns arquivos de cabeçalho são necessários para que a ferramenta não os marque como não utilizados, e assim por diante. Essas opções são definidas em um arquivo .editorconfig, que você pode adicionar ao seu projeto para, entre outras coisas, impor estilos de codificação consistentes para todos que funcionam na base de código. Para obter mais informações sobre como adicionar um arquivo .editorconfig ao seu projeto, confira Criar configurações de editor portáteis e personalizadas com o EditorConfig.

As configurações de .editorconfig que você pode usar com o Include Cleanup são:

Configuração Valores Exemplo
cpp_include_cleanup_add_missing_error_tag_type

Define o nível de erro das mensagens de adição de inclusões transitivas.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_remove_unused_error_tag_type

Define o nível de erro das mensagens de remoção de inclusões não utilizadas.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_excluded_files

Exclui os arquivos especificados das mensagens do Include Cleanup. Você não receberá uma sugestão relacionada ao cabeçalho, seja para adicioná-lo ou indicando que ele não foi utilizado.
filename cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
cpp_include_cleanup_required_files

Especifique que o uso de file1 exige file2. Por exemplo, especifique que, se você usar atlwin.h, altbase.h também deve ser incluído.
file1:file2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_include_cleanup_replacement_files

Substitui file1 por file2 durante o processamento do Include Cleanup. Por exemplo, você pode preferir usar cstdio, em vez de stdio.h. Se você tiver um arquivo com #include <cstdio> e #include <stdio.h>, e você consumir conteúdo somente de stdio.h, com essa configuração, o Include Cleanup indicará que você remova stdio.h, porque ele substituiu o uso de cstdio por stdio.h durante o processamento. Se você não usar o conteúdo de nenhum dos dois, o recurso Include Cleanup indicará que você remova ambos.
file1:file2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_alternate_files

Não gere uma mensagem para inclusão indireta file2, se o file1 foi incluído. Por exemplo, se você #include <windows.h> e estiver usando apenas algo do cabeçalho incluído indiretamente winerror.h, o Include Cleanup não solicitará a adição de winerror.h. Útil quando você prefere incluir um arquivo de cabeçalho de fachada, em vez das inclusões indiretas que ele contém.
file1:file2 cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h

Confira também

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