Editar e refatorar o código C++ no Visual Studio
O Visual Studio fornece várias ferramentas para ajudá-lo a escrever, editar e refatorar o código.
IntelliSense
O IntelliSense é uma ferramenta eficiente de preenchimento de código que sugere símbolos e snippets de código para você conforme você digita. O C++ IntelliSense no Visual Studio é executado em tempo real, analisando a base de código conforme você a atualiza e fornecendo recomendações. Conforme você digita mais caracteres, a lista de resultados recomendados é restringida.
Alguns símbolos são omitidos automaticamente para ajudar a restringir os resultados. Por exemplo, ao acessar os membros de um objeto de classe de fora da classe, você não pode ver os membros privados por padrão ou os membros protegidos (quando não está no contexto de uma classe filho). Ajuste a filtragem usando os botões na parte inferior.
Depois de escolher o símbolo na lista suspensa, preencha-o automaticamente com Tab, Enter ou um dos caracteres de confirmação (por padrão: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \
). Para adicionar ou remover caracteres dessa lista, pesquise "IntelliSense" em Início Rápido (Ctrl+Q) e escolha a opção Editor de Texto > C/C++ > Avançado. A opção Caracteres de Confirmação da Lista de Membros permite que você personalize a lista com as alterações desejadas.
A opção Modo de Filtro da Lista de Membros controla quais tipos de sugestões de preenchimento automático do IntelliSense são exibidos. Por padrão, ela é definida como Difuso. Em uma pesquisa difusa, se você tiver um símbolo chamado MyAwesomeClass, poderá digitar "MAC" e localizar a classe nas sugestões de preenchimento automático. O algoritmo difuso define um limite mínimo ao qual os símbolos precisam atender para serem mostrados na lista. A filtragem inteligente exibe todos os símbolos que contêm subcadeias de caracteres que correspondem ao que foi digitado. A filtragem de prefixo pesquisa cadeias de caracteres que começam com o que foi digitado.
Para obter mais informações sobre o C++ IntelliSense, confira Visual C++ IntelliSense e Configurar um projeto C++ para o IntelliSense.
IntelliCode
O IntelliCode é o IntelliSense assistido por IA. Ele coloca o candidato mais provável no início da lista de conclusão. As recomendações do IntelliCode são baseadas em milhares de projetos open-source no GitHub, cada um com mais de 100 estrelas. Quando combinada com o contexto do código, a lista de conclusão é adaptada para promover práticas comuns.
Ao escrever em C++, o IntelliCode ajudará durante o uso de bibliotecas populares, como a Biblioteca Padrão C++. O contexto do código é usado para fornecer as recomendações mais úteis primeiro. No exemplo a seguir, a função membro size
é usada com a função sort
e, portanto, é exibida na parte superior da lista de resultados.
No Microsoft Visual Studio 2022 e Microsoft Visual Studio 2019, o IntelliCode está disponível como um componente opcional na carga de trabalho Desenvolvimento para desktop com C++. Para verificar se o IntelliCode está ativo para o C++, acesse Ferramentas>Opções>IntelliCode>Geral e defina Modelo base do C++ como Habilitado.
No Visual Studio 2017, o IntelliCode está disponível como uma extensão no Visual Studio Marketplace.
IntelliSense Preditivo (experimental)
O IntelliSense Preditivo é um recurso experimental que usa o reconhecimento contextual para limitar o número de resultados exibidos na lista suspensa do IntelliSense. O algoritmo aplica a correspondência de tipos, de modo que ele mostre somente os resultados que correspondem ao tipo esperado. No caso mais simples, se você digitar int x =
e invocar a lista suspensa do IntelliSense, verá apenas inteiros ou funções que retornam inteiros. Esse recurso está desativado por padrão porque ainda está em desenvolvimento. Ele funciona melhor com símbolos globais. Ainda não há suporte para funções de membro. Você pode ativá-la digitando "Preditivo" em Início Rápido ou acessando Ferramentas>Opções>Editor de Texto>C/C++>Experimental>Habilitar IntelliSense Preditivo.
Para substituir o IntelliSense Preditivo e mostrar a lista mais longa, pressione Ctrl + J. Se o IntelliSense Preditivo estiver ativado, invocar Ctrl + J removerá o filtro Preditivo. Pressionar Ctrl+J novamente removerá o filtro de acessibilidade dos resultados da Lista de Membros quando relevante. O botão ([+]) na lista suspensa do IntelliSense faz a mesma coisa que Ctrl + J. Passe o mouse sobre o botão para ver informações da dica de ferramenta sobre o que está sendo mostrado.
A captura de tela anterior mostra vários botões na lista suspensa. Eles habilitam filtros do IntelliSense para diferentes tipos de resultados:
- Variáveis e constantes
- Funções
- Tipos
- Macros
- Enumerações
- Namespaces
Um botão é exibido somente quando relevante para a sessão atual do IntelliSense. Normalmente, os botões não aparecem todos ao mesmo tempo.
IntelliSense de modelo
A barra de modelos é um elemento de interface do usuário que aparece quando o cursor está em uma definição de modelo. Isso é útil porque você pode fornecer argumentos de modelo de exemplo ao intellisense que aparecerão quando o corpo do modelo for editado. Por exemplo, você pode especificar que um argumento do modelo é do tipo std::vector<int>
. Em seguida, ao usar esse argumento no corpo do modelo, você verá os membros do std::vector<int>
no intellisense.
Clique no ícone <T> para expandir/recolher a Barra de Modelo. Clique no ícone de lápis ou clique duas vezes na Barra de Modelos para abrir a janela Editar em que você especifica os tipos de argumento para os parâmetros.
A barra de modelos pode popular automaticamente tipos de parâmetro com base em instanciações do modelo no código. Clique em Adicionar Todas as Instanciações Existentes para ver uma lista de todos os argumentos concretos que foram usados para criar uma instância do modelo em toda a base de código.
Uma janela na parte inferior do editor mostra o local em que cada instanciação foi encontrada e quais eram os argumentos. Você pode selecionar uma instanciação para acessar o local no código em que ela foi encontrada.
As informações da Barra de Modelos são específicas do usuário. Ela fica armazenada na pasta .vs
e não está confirmada no controle do código-fonte.
Rabiscos de erro e correções rápidas
Se o editor detectar problemas com o código, ele adicionará rabiscos coloridos sob o problema. Rabiscos vermelhos indicam um código que não será compilado. Rabiscos verdes indicam outros tipos de problemas que podem ser graves. Abra a janela Lista de Erros para obter mais informações sobre os problemas.
Para alguns tipos de erros e padrões comuns de codificação, o editor oferece uma Correção Rápida em forma de lâmpada que aparece quando você passa o mouse sobre os textos sublinhados. Clique na seta para baixo para ver as sugestões.
No exemplo a seguir, um vector
foi declarado, mas nenhuma definição foi encontrada e, portanto, o editor oferece a inclusão do arquivo de cabeçalho necessário:
O editor também oferece Correções Rápidas para algumas oportunidades de refatoração. Por exemplo, se você declarar uma classe em um arquivo de cabeçalho, o Visual Studio oferecerá a criação de uma definição para ele em um arquivo .cpp separado.
controle de alterações
Sempre que você fizer uma alteração em um arquivo, uma barra amarela será exibida à esquerda para indicar que alterações não salvas foram feitas. Quando você salvar o arquivo, a barra ficará verde. As barras verde e amarela serão preservadas, desde que o documento esteja aberto no editor. Elas representam as alterações feitas desde que você abriu o documento pela última vez.
Mover o código
Você pode mover as linhas de código para cima e para baixo selecionando-as, mantendo pressionada a tecla Alt e pressionando as teclas de direção Para Cima/Para Baixo.
Inserir snippets
Um snippet é uma parte predefinida do código-fonte. Clique com o botão direito do mouse em um só ponto ou no texto selecionado e escolha Snippet para inserir um snippet ou colocar o texto selecionado dentro de um snippet. A ilustração a seguir mostra as três etapas para colocar uma instrução selecionada entre um loop for. Os realces em amarelo na imagem final são campos editáveis acessados com a tecla TAB. Para obter mais informações, consulte Snippets de Código.
Uma função está selecionada. Na lista suspensa que aparece após um clique com o botão direito do mouse no nome da função, a opção Surround With... é realçada em amarelo. No menu suspenso Surround With: o snippet de código de um loop 'for' está selecionado. Isso resulta na colocação da função dentro de um loop for. A variável de loop e o limite são mostrados em amarelo para indicar que são campos editáveis.
Adicionar Classe
Adicione uma nova classe por meio do menu Projeto ou do menu de contexto em Gerenciador de Soluções:
Use também o Assistente de Classe para modificar ou examinar uma classe existente.
Para obter mais informações, confira Adicionando funcionalidade com assistentes de código (C++).
Refatoração
As refatorações estão disponíveis no menu de contexto de Ação Rápida ou clicando em uma lâmpada no editor. Algumas também são encontradas no menu Editar > Refatorar. Esses recursos incluem:
- Renomear
- Extrair função
- Implementar virtuais puras
- Criar declaração/definição
- Mover definição de função
- Converter para literal de cadeia de caracteres bruta
- Alterar assinatura
Imposição de estilo de código com o ClangFormat e o EditorConfig
O Visual Studio 2017 e posterior vem com suporte interno para o ClangFormat, um utilitário de formatação de código popular para o C++ baseado no Clang/LLVM. Digite "ClangFormat" em Início Rápido para defini-lo para usar um destes formatos comuns:
- LLVM
- Chromium
- Mozilla
- WebKit
- Visual Studio
Você também pode fornecer o próprio arquivo .clang-format
ou _clang-format
para aplicar regras personalizadas a todos os arquivos de código no mesmo nível ou abaixo.
Os arquivos podem ser compartilhados com facilidade por meio do controle do código-fonte e, portanto, você pode impor convenções de codificação a toda a equipe de desenvolvimento.
O Visual Studio 2017 e posterior também dá suporte ao EditorConfig, que funciona de maneira semelhante. No entanto, o ClangFormat traz mais opções de estilo do que o EditorConfig, incluindo regras específicas do C++. Com o EditorConfig, você cria arquivos .editorconfig e coloca-os em pastas diferentes da base de código para especificar estilos de código para essas pastas e suas subpastas. Um arquivo .editorconfig substitui qualquer outro arquivo .editorconfig nas pastas pai e substitui as configurações de formatação definidas por meio de Ferramentas>Opções. Defina regras para tabulações vs. espaços, o tamanho do recuo, entre outros. Para obter mais informações, confira Criar configurações portáteis do editor personalizado com o EditorConfig.
Outras opções de formatação
A caixa de pesquisa Início Rápido fornece a maneira mais rápida de localizar uma configuração ou ferramenta. Ela está localizada no menu principal. Basta começar a digitar e a lista de preenchimento automático filtrará os resultados.
Para definir opções de formatação como recuos, preenchimento de chaves e colorização, digite "Formatação do C++" na janela Início Rápido.
Outras opções de formatação estão localizadas em Editar>Avançado no menu principal.
As opções para habilitar e configurar recursos de edição específicos do C++ estão localizadas em Ferramentas>Opções>Editor de Texto>C/C++. Depois de escolher a opção que deseja definir, você obtenha mais ajuda pressionando F1 quando a caixa de diálogo estiver no foco. Para obter opções gerais de formatação de código, digite Editor C++
em Início Rápido.
As funcionalidades experimentais, que podem ou não ser incluídas em uma versão futura do Visual Studio, são encontradas na caixa de diálogo Experimental do C++ do Editor de Texto. No Visual Studio 2017 e posterior, você pode habilitar o IntelliSense Preditivo nessa caixa de diálogo.
Consulte Também
Ler e entender o código C++
Navegue pela base de código do C++ no Microsoft Visual Studio
Colaborar com o Live Share para C++