ReSharper C++ vs. Visual Assist

Este documento descreve como o ReSharper C++ difere do Visual Assist da Whole Tomato.

Como os dois produtos são desenvolvidos ativamente, e sua funcionalidade muda regularmente, consideramos essa comparação válida para versões específicas indicadas no cabeçalho da tabela de comparação.

Se você encontrar itens imprecisos nessa tabela, poste um comentário abaixo para nos informar, e atualizaremos a tabela o mais rápido possível.

Visual Assist no Visual Studio 2019 + Visual Assist Build 2341
no Visual Studio 2019 + ReSharper C++ 2019.2

Versões com suporte do Visual Studio

Visual Studio 2019 Visual Studio 2019
Visual Studio 2017 Visual Studio 2017
Visual Studio 2015 Visual Studio 2015
Visual Studio 2013 Visual Studio 2013
Visual Studio 2012 Visual Studio 2012
Visual Studio 2010 Visual Studio 2010
Visual Studio 2008 Sem suporte
Visual Studio 2005 Sem suporte
Visual Studio .NET 2003 Sem suporte
Visual Studio .NET 2002 Sem suporte
Visual C++ 6.0 Sem suporte

Especificações C/C++ com suporte

C/C++ C/C++
C++/CLI C++/CLI

Detecção de problemas de código

Realce de símbolos incorretamente digitados Realce de símbolos não resolvidos
Navegação entre issues de código (janela de ferramentas, editor) Navegação entre issues de código (janela de ferramentas, editor, comandos dedicados)
21 inspeções do Clang-Tidy 264 verificações integradas do Clang-Tidy
Nenhuma funcionalidade correspondente 652 diagnósticos integrados do Clang-Tidy
Nenhuma funcionalidade correspondente 87 verificações integradas do Clang Static Analyzer
Verificação ortográfica Verificação ortográfica
Realce delimitadores incompatíveis Nenhuma funcionalidade correspondente
Nenhuma funcionalidade correspondente Nomenclatura inconsistente
A constante zero pode ser substituída por nullptr A constante zero pode ser substituída por nullptr
Função de substituição sem o especificador "override" Função de substituição sem o especificador "override"
O construtor shared_pointer/unique_pointer pode ser substituído por make_shared/make_unique Construtor de ponteiro inteligente usado em vez de sua função make
Nenhuma funcionalidade correspondente Mais de 180 inspeções de código patenteadas
Nenhuma funcionalidade correspondente Inspeções de código para a maioria dos erros do compilador e alguns avisos
Nenhuma funcionalidade correspondente Pesquisa assíncrona de problemas de código em qualquer escopo
Nenhuma funcionalidade correspondente Execução de inspeção de código na linha de comando

Correções rápidas para issues de código

Criar a partir do uso Criar a partir do uso
Adicionar #include Importar variável globais, tipos, definições de tipo, funções, macros
Criar declarações Criar declarações
Reparar a formatação de maiúsculas e minúsculas Nenhuma funcionalidade correspondente
Mais de 10 correções rápidas para inspeções configuráveis Mais de 120 correções rápidas para inspeções configuráveis

Assistência para codificação

Realçar delimitadores correspondentes Realçar itens em pares (incluindo macros e argumentos de formato em printf e boost::format)
Realçar a linha atual Realçar a linha atual
Acrônimos / Shorthand CamelHumps
Listas de sugestões / Sugestões inteligentes Preenchimento de código com sugestões inteligentes
Converter ponto em -> Converter ponto em -> e -> em ponto
Seleção inteligente Estender/recolher seleção + Selecionar declaração de inclusão
Várias pranchetas Histórico de pranchetas com visualização de itens
Informações de parâmetros Informações de parâmetros
Nenhuma funcionalidade correspondente Dicas de editor
Enhanced syntax coloring (6 different identifier kinds) / Símbolos estáveis em itálico / Símbolos locais em negrito Realce de sintaxe (20 tipos diferentes de identificadores)
Realçar referências ao símbolo sob o cursor Realçar usos no arquivo
Seleção circundante Circundar com / Comentar com linha ou comentário de bloco
Inserir tokens de fechamento automaticamente Inserir automaticamente delimitador e formato correspondentes
Informações rápidas com documentação Dicas de ferramentas realçadas em sintaxe com documentação
Estender comentários de várias linhas automaticamente com Enter Estender comentários de várias linhas /**/ e /// automaticamente com Enter
Inserir sublinhado após m e Shift Nenhuma funcionalidade correspondente
Caixas de listagem aprimoradas Nenhuma funcionalidade correspondente
Realce de palavras correspondentes (código e comentários) Nenhuma funcionalidade correspondente
Indicador de coluna (margem direita) Nenhuma funcionalidade correspondente
Classificar linhas Nenhuma funcionalidade correspondente
Inserir caminho Nenhuma funcionalidade correspondente
Visualizar arquivos de comentários Nenhuma funcionalidade correspondente
Redefinir o zoom do editor Nenhuma funcionalidade correspondente
Nenhuma funcionalidade correspondente Duplicar a linha ou seleção atual
Nenhuma funcionalidade correspondente Preenchimento Postfix
Nenhuma funcionalidade correspondente Modelos Postfix
Nenhuma funcionalidade correspondente Documentação rápida
Nenhuma funcionalidade correspondente Realce automático de saídas de função

Assistência para estilo de código

Formatar depois de colar (as regras de formatação são herdadas do Visual Studio) Aplicar regras de formatação em qualquer escopo (com o extenso conjunto de regras de formatação do ReSharper C++)
Nenhuma funcionalidade correspondente Aprenda regras de formatação a partir do código existente
Nenhuma funcionalidade correspondente Suporte para EditorConfig
Nenhuma funcionalidade correspondente Suporte ao formato Clang
Nenhuma funcionalidade correspondente Aplique estilos de código e remova redundâncias de código em qualquer escopo com limpeza de código
Nenhuma funcionalidade correspondente Estilo de cabeçalho de arquivo configurável
Nenhuma funcionalidade correspondente Estilo de nomeação configurável com esquemas predefinidos (STL, Google, LLVM, CamelCase, Microsoft)
Nenhuma funcionalidade correspondente Estilo configurável para const e modificadores voláteis no código gerado
Nenhuma funcionalidade correspondente Estilo configurável para a diretiva include no código gerado
Nenhuma funcionalidade correspondente Estilo configurável para inicializadores de ponteiro padrão (0|nullptr|NULL) no código gerado

Refatorações e transformações de código

Acesso a comandos de refatoração Refactor This
Renomear Renomear
Alterar assinatura Alterar assinatura
Introduzir variável Introduzir variável
Encapsular campo Encapsular campo (com a ação Generate getters and setters)
Extrair método Extrair método
Adicionar/remover chaves Adicionar/remover chaves
Renomear arquivos Renomear arquivo
Mover implementação para arquivo de origem Mover implementação fora do escopo da classe
Mover implementação para declaração de arquivo/classe de cabeçalho Nenhuma funcionalidade correspondente
Mover seleção para novo arquivo Nenhuma funcionalidade correspondente
Snippets para refatorações (editáveis) Nenhuma funcionalidade correspondente
Converter instância em ponteiro e vice-versa Nenhuma funcionalidade correspondente
Simplificar declaração de instância Nenhuma funcionalidade correspondente
Nenhuma funcionalidade correspondente Introduzir campo
Nenhuma funcionalidade correspondente Variável inline
Nenhuma funcionalidade correspondente Introduzir alias de namespace
Nenhuma funcionalidade correspondente Introduzir/Definição de tipo inline
Nenhuma funcionalidade correspondente Adicionar o especificador = default, = delete, pure ou virtual a uma função
Nenhuma funcionalidade correspondente Converter ?: em if, e vice-versa
Nenhuma funcionalidade correspondente Converter a diretiva #include de colchete angular no formato entre aspas, e vice-versa
Nenhuma funcionalidade correspondente Converter declaração de definição de tipo em declaração de alias, e vice-versa
Nenhuma funcionalidade correspondente Converter em definição de namespace aninhada
Nenhuma funcionalidade correspondente Converter tipo de retorno regular em tipo de retorno à direita, e vice-versa
Nenhuma funcionalidade correspondente Criar tipo derivado: classe, interface, estrutura, classe de interface, estrutura de interface, classe de referência, estrutura de referência
Nenhuma funcionalidade correspondente Inverter operador relacional
Nenhuma funcionalidade correspondente Inverter argumentos do operador
Nenhuma funcionalidade correspondente Inicializar campo a partir de parâmetro construtor
Nenhuma funcionalidade correspondente Inverter instrução if
Nenhuma funcionalidade correspondente Mesclar instruções if aninhadas
Nenhuma funcionalidade correspondente Negar expressão lógica
Nenhuma funcionalidade correspondente Remover chaves
Nenhuma funcionalidade correspondente Substituir "auto" por declaração de tipo explícita
Nenhuma funcionalidade correspondente Substituir "decltype" pelo tipo subjacente
Nenhuma funcionalidade correspondente Substituir "decltype(auto)" por declaração de tipo explícita
Nenhuma funcionalidade correspondente Dividir ou juntar declaração com várias declarações
Nenhuma funcionalidade correspondente Substituir chamada de macro
Nenhuma funcionalidade correspondente Substituir alias de tipo de modelo
Nenhuma funcionalidade correspondente Especificar argumentos de modelo explicitamente
Nenhuma funcionalidade correspondente Substituir definição de tipo (e, opcionalmente, todas as definições de tipo aninhadas)

Geração de código

Implementar interface/métodos virtuais Gerar membros ausentes/substituintes
Criar implementação Gerar implementação + Gerar implementação inline
Criar implementações de métodos Gerar definições
Adicionar instruções de formatação de maiúsculas/minúsculas ausentes Gerar instruções de formatação de maiúsculas/minúsculas ausentes para enumeração
Documentar método Documentar símbolo
Adicionar declaração progressiva Adicionar declaração progressiva
Adicionar membro Nenhuma funcionalidade correspondente
Adicionar membro semelhante Nenhuma funcionalidade correspondente
Nenhuma funcionalidade correspondente Gerar construtores
Nenhuma funcionalidade correspondente Gerar operadores de cópia e movimentação
Nenhuma funcionalidade correspondente Gerar getters e setters
Nenhuma funcionalidade correspondente Gerar operadores de igualdade
Nenhuma funcionalidade correspondente Gerar operadores relacionais
Nenhuma funcionalidade correspondente Gerar operações de fluxo (incluindo funções Boost.Serialization)
Nenhuma funcionalidade correspondente Gerar função de hash
Nenhuma funcionalidade correspondente Gerar função de permuta
Nenhuma funcionalidade correspondente Gerar métodos do Google Mock
Nenhuma funcionalidade correspondente Gerar função que converte enumeração em string (configurável)
Nenhuma funcionalidade correspondente Criar tipo derivado

Snippets/modelos de código

Snippets do VA 30 modelos dinâmicos incorporados + modelos dinâmicos personalizados
Snippets "Surround with" 19 modelos circundantes incorporados + modelos circundantes personalizados
Criar arquivo (precisa ser chamado duas vezes para cabeçalho e cpp) Modelos de arquivo incorporados para classe e estrutura (criam o cabeçalho e o cpp de uma só vez) + modelos de arquivo personalizados
Strings reservadas /espaços reservados de ambiente em snippets Macros em modelos de código
Editor de snippets Editor de modelos
Criar snippet a partir da seleção Criar modelo dinâmico a partir da seleção
Nenhuma funcionalidade correspondente Modelos de vários arquivos

Navegação e pesquisa

Ir para a declaração (com Goto) Ir para a declaração (com reconhecimento de uso)
Ir para a implementação (com Goto) Ir para a implementação
Esboço do VA Estrutura do arquivo
Arquivos recentes (exibição do VA) Ir para arquivos recentes
Abrir arquivo na solução Ir para o arquivo
Localizar símbolo na solução Ir para o símbolo
Ir para relacionado Ir para arquivos relacionados
Ir para membro Ir para membro do arquivo
Mover escopo Ir para membro seguinte/anterior
Encontrar referências Encontrar usos
Localizar por contexto Ir para o realce seguinte/anterior / Janela Find Results
Abrir arquivo correspondente Alternar entre cabeçalho e origem
Navegar para frente e para trás Percorrer o histórico de navegação
Hashtags do VA Marcadores
Links de origem Itens de tarefas pendentes com padrões de URL externos
Listar métodos no arquivo Nenhuma funcionalidade correspondente
Barra de navegação do VA Nenhuma funcionalidade correspondente
Navegador de classe de focalização Nenhuma funcionalidade correspondente
Realçar arquivos de projeto na janela Output Nenhuma funcionalidade correspondente
Realçar resultados de localização Nenhuma funcionalidade correspondente
Nenhuma funcionalidade correspondente Busca geral
Nenhuma funcionalidade correspondente Ir para o texto
Nenhuma funcionalidade correspondente Ir para edições recentes
Nenhuma funcionalidade correspondente Ir para a edição anterior
Nenhuma funcionalidade correspondente Navegação até o destino
Nenhuma funcionalidade correspondente Ir para os símbolos base
Nenhuma funcionalidade correspondente Ir para símbolos derivados
Nenhuma funcionalidade correspondente Ir para o tipo de símbolo
Nenhuma funcionalidade correspondente Ir para o arquivo nas proximidades
Nenhuma funcionalidade correspondente Type Hierarchy
Nenhuma funcionalidade correspondente Hierarquia de inclusões
Nenhuma funcionalidade correspondente Ir para o modelo primário/especializações
Nenhuma funcionalidade correspondente Localizar o arquivo atual no Solution Explorer
Nenhuma funcionalidade correspondente Encontrar ações e configurações
Nenhuma funcionalidade correspondente Navegação por pontos de interrupção e janela de ferramentas
Nenhuma funcionalidade correspondente Inclui analisador

Depuração

Filtros de etapa Filtros de etapa
Desabilitar temporariamente todos os pontos de interrupção habilitados Nenhuma funcionalidade correspondente
Associar temporariamente todos os pontos de interrupção ao thread atual Nenhuma funcionalidade correspondente
Nenhuma funcionalidade correspondente Inspeções inline
Nenhuma funcionalidade correspondente Dicas de dados pesquisáveis

Unreal Engine

Suporte para projetos UE4 Suporte para projetos UE4
Sugestões inteligentes para especificadores de reflexão UE4 Preenchimento de código para especificadores de reflexão UE4
Nenhuma funcionalidade correspondente Documentação rápida para especificadores de reflexão UE4
Suporte para chamadas de procedimento remoto UE4 Suporte para chamadas de procedimento remoto UE4
Nenhuma funcionalidade correspondente Renomear e alterar refatorações de assinatura para funções RPC UE4
Excluir origem de mecanismo da navegação Nenhuma funcionalidade correspondente
Nenhuma funcionalidade correspondente Indexação adiada do código do mecanismo
Nenhuma funcionalidade correspondente Suporte para convenções de nomenclatura UE4
Nenhuma funcionalidade correspondente Inspeções de código específicas do UE4

Testes de unidade

Nenhuma funcionalidade correspondente Assistência para testes de unidade para as estruturas Google Test, Catch 2.5, Boost.Test e doctest

Gerenciamento de configurações

Configurações de importação/exportação Sincronização automática de várias camadas de configurações e modelos personalizados