Ferramentas IDE do Visual Studio para atualizar o código C++

O Visual Studio ajuda você a atualizar o código C++ herdado com opções de compilador, avisos de análise de código e recursos de editor, como Correções Rápidas, Informações Rápidas e a barra de rolagem aprimorada. O termo "código herdado" refere-se a qualquer uma das categorias:

  • Código que antes era permitido pelo MSVC (compilador do Microsoft C++), mas nunca esteve em conformidade com o padrão C++.

    Para atualizar o código MSVC antigo sem conformidade, ative a opção do compilador /permissive-. Todas as instâncias de uso nsem conformidade são sublinhadas com rabiscos vermelhos no editor de código. As mensagens de erro na janela Lista de Erros incluem uma recomendação de como corrigir o erro. Clique no código de erro para acessar a página de ajuda na documentação. Se corrigir todos os erros de uma vez for impraticável, você poderá atualizar o código não compatível em estágios ativando a opção /permissive-, corrigindo alguns erros e desativando a opção novamente. O código será compilado com as novas melhorias e você poderá voltar e corrigir os problemas restantes posteriormente. Consulte a página /permissive- para obter exemplos de código MSVC não compatível.

  • Código permitido em uma versão anterior do padrão C++, mas que foi preterido ou removido em uma versão posterior.

    Para atualizar para um padrão de linguagem mais recente, defina a opção Linguagem C++ padrão como o padrão desejado e corrija os erros de compilação gerados. Em geral, é recomendável definir o padrão de linguagem como /std:c++17 ou /std:c++20. Os erros gerados ao atualizar para um padrão mais recente não estão relacionados aos erros gerados ao usar a opção /permissive-.

  • Código que está em conformidade com todas as versões do padrão, mas não é mais considerado uma prática recomendada no C++moderno.

    Para identificar o código em que são recomendadas alterações, execute a Análise de código.

Abrir e converter um projeto herdado

Se o projeto herdado for baseado em uma versão mais antiga do Visual Studio, você poderá abri-lo no Visual Studio 2017 ou no Visual Studio 2019. O Visual Studio converte-o automaticamente no esquema de projeto atual com suporte para todos os recursos mais recentes do compilador e do IDE.

Screenshot of the Upgrade a project dialog.

Para obter mais informações, consulte Atualizar projetos C++ de versões anteriores do Visual Studio.

Pesquisar a base de código

A atualização de uma base de código geralmente envolve a pesquisa em vários arquivos. Para pesquisar qualquer coisa em sua base de código, pressione Ctrl+T para abrir a caixa de pesquisa Ir para Todos.

Screenshot of the Go to all dialog.

Para restringir o escopo de pesquisa, digite um dos filtros de 1 letra, seguido por um espaço e, em seguida, o item que você está procurando.

Lista de Erros

Depois de definir o Padrão de Linguagem C++ desejado e quaisquer outras opções do compilador (Propriedades do >Projeto>Geral), pressione Ctrl+Shift+B para compilar seu projeto. Você pode esperar encontrar alguns erros e avisos na forma de rabiscos vermelhos em vários locais do código. Os erros também aparecem na Lista de Erros. Para obter mais informações sobre um erro específico, clique no código de erro para ir para a página de ajuda na documentação. Códigos de erro que começam com um "C" são erros do compilador. Os códigos que começam com "MSB" são erros do MSBuild que indicam um problema com a configuração do projeto.

Screenshot showing compiler and MSBuild errors in Error List.

Indicador de Integridade do Documento

O indicador de integridade do documento na parte inferior do editor mostra o número de erros e avisos no documento atual e permite que você navegue diretamente de um aviso/erro para o próximo.

Document health indicator.

Em muitos casos, você pode encontrar mais informações sobre um erro específico na documentação sobre o histórico de alterações e melhorias de conformidade do Visual Studio.

Use a análise de código para modernizar seu código

Ao atualizar, recomendamos que você execute a análise de código em seu projeto para que o código esteja em conformidade, no mínimo, com as Regras Nativas Recomendadas da Microsoft. Essas regras são uma combinação de regras definidas pela Microsoft e um subconjunto das Diretrizes Principais do C++. Estando em conformidade com elas, você reduzirá ou eliminará muito as fontes comuns de bugs e, ao mesmo tempo, tornará seu código mais legível e, portanto, mais fácil de manter. A análise de código usando as Regras Nativas Recomendadas da Microsoft é habilitada por padrão. Você pode ativar regras adicionais em Projeto>Propriedades>Code Analysis. O código que viola uma das regras é sinalizado como um aviso e sublinhado com um rabisco verde no editor de código. Passe o cursor sobre o rabisco para ver uma dica de ferramenta QuickInfo que descreve o problema.

Screenshot of a Code analysis tooltip.

Clique no ícone de filtro na coluna Código para escolher quais avisos serão exibidos.

Screenshot of Code analysis filters in Error List.

Erros e avisos de análise de código também aparecem na Lista de erros, assim como erros do compilador.

Screenshot of Code analysis warnings in Error List.

Você pode alterar quais regras estão ativas e criar conjuntos de regras personalizados. Para obter mais informações sobre como usar a análise de código, consulte Visão geral da análise de código para C/C++.

Use as ações rápidas para modernizar o código

O editor de código fornece Ações Rápidas para algumas recomendações comuns. Quando o ícone da lâmpada é exibido, você pode clicar nele para ver as ações rápidas disponíveis.

Converter macros em funções constexpr

A imagem a seguir mostra o uso da macro chamada AVERAGE, que tem a colorização semântica padrão. A imagem também mostra a dica da ferramenta QuickInfo exibida quando o cursor do mouse passa o mouse sobre ela:

Screenshot of a QuickInfo macro expansion.

Como o uso de macros é desencorajado no C++ moderno, o Visual Studio facilita a conversão de macros em funções constexpr:

  1. Clique com o botão direito do mouse em AVERAGE e escolha Ir para definição.

  2. Clique no ícone de chave de fenda e escolha Converter macro em constexpr

    Screenshot of a Quick Action macro to constexpr.

A macro é convertida conforme mostrado abaixo:

Screenshot of a constexpr function.

E a chamada para AVERAGE agora é colorida como uma chamada de função, e a dica de ferramenta Informações Rápidas mostra o tipo deduzido da função:

Screenshot of a constexpr function call.

Inicializar variáveis

Variáveis não inicializadas podem conter valores aleatórios que levam a erros sérios. A análise de código sinaliza essas instâncias e o editor fornece uma Ação Rápida:

Screenshot of the pop-up for an uninitialized variable.

Converter em literal de cadeia de caracteres bruta

Literais de cadeia de caracteres brutos são menos propensos a erros e mais convenientes de digitar do que cadeias de caracteres com caracteres de escape inseridos. Clique com o botão direito do mouse em uma cadeia de caracteres e escolha Ações Rápidas para convertê-la em um literal de cadeia de caracteres bruta.

Raw string literal.

A cadeia de caracteres é convertida em: R"(C:\Users\bjarnes\demo\output.txt)".