O ReSharper C++ torna o Visual Studio um IDE muito melhor para desenvolvedores C++, fornecendo análises de código dinâmicas, correções rápidas, pesquisa e navegação avançadas, preenchimento de código inteligente, refatorações, uma variedade de opções de geração de código e outros recursos para ajudar a aumentar a sua produtividade diária.
O ReSharper C++ começa a analisar o código assim que você abre o projeto no editor do Visual Studio e continua analisando novamente os arquivos enquanto os edita, detectando erros e possíveis problemas antes mesmo de compilar.
Estão disponíveis mais de 40 correções rápidas para resolver instantaneamente muitos dos issues de código detectados. Sempre que você vir uma lâmpada à esquerda do seu código, pressione Alt+Enter para aplicar uma solução rápida sugerida.
Por exemplo, quando uma variável não inicializada for detectada, você poderá inicializá-la imediatamente com o valor padrão. Outras correções rápidas permitem adicionar diretivas #include
ausentes ou remover qualificadores redundantes em uma instrução específica ou em um escopo maior, como um arquivo ou até mesmo a solução inteira.
Outro benefício das correções rápidas é que você pode começar a usar classes, métodos, variáveis, propriedades e campos antes de os declarar. Quando o ReSharper C++ detecta um símbolo não declarado, ele sugere correções rápidas para gerar a declaração de símbolo correspondente com base no seu uso.
Para qualquer escopo, como um arquivo, projeto ou solução, você pode solicitar ao ReSharper C++ para exibir todos os problemas de código detectados em uma janela de ferramentas dedicada.
Find Code Issues funciona em segundo plano, o que permite que você continue editando ou navegando em seu código enquanto o ReSharper C++ executa sua análise e preenche a janela de ferramentas Inspection Results.
Assim que os resultados estiverem prontos, você poderá agrupá-los por vários critérios e pesquisar para encontrar tipos específicos de issues. Você também pode salvar e carregar relatórios dos resultados de Find Code Issues.
As inspeções de código do ReSharper C++ também estão disponíveis em InspectCode, uma ferramenta gratuita de linha de comando que permite executar inspeções do ReSharper fora do Visual Studio.
Para usar o InspectCode, baixe e descompacte o pacote de ferramentas de linha de comando e execute InspectCode.exe com o arquivo de solução como parâmetro. Para saber mais sobre o uso de InspectCode, leia este artigo.
O ReSharper C++ integra-se perfeitamente ao Clang-Tidy, uma poderosa ferramenta de análise de código open source baseada no compilador Clang. A integração fornece verificações de código e correções rápidas.
O ReSharper C++ inclui uma coleção de configurações de estilo de sintaxe que você pode usar para fazer o ReSharper seguir seu estilo de código escolhido e aplicá-lo em toda a sua base de código.
Você pode personalizar suas preferências de estilo de sintaxe na página Code Editing | C++ | Syntax Style. O valor da opção selecionada será usado para geração de código e para aplicação de estilo de código.
ReSharper C++ will highlight style violations and offer you quick-fixes to help eliminate them. Todas as correções rápidas de estilo de sintaxe podem ser aplicadas no escopo, incluindo em escopos locais como corpos de função ou definições de classe.
Para impor o estilo de sintaxe escolhido, você pode usar a limpeza de código ou a ação dedicada Apply Syntax Style, que corrigirá problemas de estilo de sintaxe na seleção, em todo o arquivo atual ou em um conjunto de arquivos dependendo do contexto atual.
O ReSharper C++ fornece várias refatorações mainstream em grande escala, como Rename, Extract Method e Change Signature. Além disso, ele oferece dezenas de ações de contexto, que são transformações de código local disponíveis com um único atalho.
Modificar o nome de uma classe ou macro pode causar muitos problemas quando isso é feito manualmente. É por isso que, quando você invoca a refatoração Rename, o ReSharper C++ cuida de todas as verificações necessárias.
Todas as modificações são realizadas automaticamente ou uma lista de conflitos pode ser resolvida manualmente para garantir que apenas as alterações necessárias e apropriadas sejam feitas.
Juntamente com os símbolos de código reais aos quais você a aplica, a refatoração Rename pode renomear arquivos relacionados (o arquivo de origem e o de cabeçalho) e o texto relacionado em comentários e na documentação, além de atualizar os usos em diretivas #include
.
A refatoração Extract Method ajuda a criar um novo método com base em um fragmento de código selecionado. O ReSharper analisa o bloco de código selecionado e detecta variáveis que podem ser convertidas em parâmetros do método ou que representam seu valor de retorno.
A refatoração Change Signature permite aplicar uma ou mais alterações à assinatura de uma função. Todos os usos, implementações e substituições da função serão atualizados de acordo.
A refatoração Introduce Variable permite criar uma nova variável local com base em uma expressão selecionada, inicializá-la com a expressão e finalmente substituir todas as ocorrências da expressão no código por referências à variável recém-introduzida.
Por outro lado, Inline Variable substitui todas as ocorrências de uma determinada variável ou constante local pelo seu inicializador.
A refatoração Introduce Field ajuda a criar um novo campo com base em uma expressão selecionada, atribuir a expressão original ao campo em seu próprio inicializador ou construtor e substituir ocorrências.
A refatoração Introduce Namespace Alias ajuda a definir nomes de atalho para namespaces profundamente aninhados.
Assim que você invoca a refatoração, ela sugere a definição de um escopo ao qual você deseja introduzir um alias de namespace.
A refatoração Introduce typedef permite criar rapidamente um typedef
para o tipo de dados selecionado e substituir esse tipo de dados e todas as suas ocorrências pelo typedef recém-criado.
A refatoração Inline typedef faz o inverso: ela substitui um typedef
existente pelo tipo de dados real.
Além das refatorações, o ReSharper C++ fornece um conjunto de ações de contexto: transformações de código local que geralmente ajudam a alternar entre opções alternativas de sintaxe. Semelhante a correções rápidas, elas são disponibilizadas quando você pressiona Alt+Enter.
Por exemplo, você pode substituir rapidamente auto
por um tipo explícito ou substituir por auto
. Outras ações de contexto ajudam a mesclar instruções if
aninhadas, gerar instruções case
ausentes ao alternar uma enumeração, substituir uma chamada de macro ou typedef
etc.
O ReSharper C++ estende as maneiras do Visual Studio de realçar a sintaxe e combinar partes estruturais do código, fornece sua própria implementação de conclusão de código e ajuda a visualizar a documentação disponível para qualquer símbolo C++.
O ReSharper C++ reconhece arquivos *.c, *.cc, *.cxx, *.cpp, *.h e *.hpp na sua solução e realça o código-fonte nesses arquivos de acordo com um esquema de cores que você pode modificar a qualquer momento.
Além disso, o ReSharper C++ realça vários itens correspondentes quando você coloca o cursor em um item em um par, seja delimitadores correspondentes, macros ou um especificador de formato e argumento em uma chamada de função printf code >.
Quando você colocar o cursor em um dos pontos de saída de uma função, loop ou instrução switch
(return
, throw
, break
etc.), o ReSharper C++ agora realçará automaticamente todas as outras saídas de função ou loop.
Em arquivos C++, você pode usar preenchimento de código ao escrever seu código, o que às vezes sugere opções de geração de código entre outras opções.
O preenchimento de código pode até sugerir símbolos que ainda não estão incluídos no arquivo atual. Quando você seleciona um símbolo como este na lista de conclusão, a diretiva #include
correspondente é adicionada automaticamente.
O pop-up Quick Documentation exibe a documentação com base nos blocos de comentários Doxygen sem forçar você a navegar até a definição de um símbolo: basta pressionar Ctrl+Shift+F1 no mapa de teclas padrão.
Mesmo se não houver documentação Doxygen disponível para um símbolo, Quick Documentation mostrará a assinatura do símbolo.
O ReSharper C++ também pode exibir dicas de ferramentas realçadas em sintaxe para elementos de código C++. As dicas de ferramentas exibirão tipos de função e variável, além de documentação.
Às vezes, os comentários da documentação XML em estilo C# também são usados para símbolos C++. O ReSharper C++ os exibe corretamente no pop-up Quick Documentation e na dica de ferramenta de informações rápidas.
O C++/CLI é um conjunto de extensões de linguagem C++ da Microsoft para facilitar a interoperabilidade entre o código gerenciado e o código nativo. Com amplo suporte para linguagens gerenciadas e C++, é natural que o ReSharper também ofereça ajuda para escrever código em C++/CLI.
No código C++/CLI, você pode acessar as mesmas refatorações e ações de intenção que no código C++ puro. Também é possível navegar entre os mundos C# e C++/CLI.
Com o ReSharper C++, encontrar seu caminho através do código-fonte fica muito mais fácil. Basta procurar declarações, membros, chamadas de método ou membros de uma hierarquia de herança com atalhos simples.
Para todos os símbolos que possuem declarações e definições separadas, o ReSharper C++ exibe o ícone Navigate to declaration/definition à esquerda (). Clique no ícone ou pressione Ctrl+B para alternar rapidamente entre a declaração e a definição correspondente.
Outras opções de navegação sensíveis ao contexto no ReSharper C++ incluem a navegação de um símbolo selecionado para seus usos, símbolos de base ou derivados.
O ReSharper C++ oferece um conjunto de comandos de navegação sem contexto, incluindo Go to File, Go to Symbol, Go to File Member e Go to Everything.
Todos esses comandos oferecem suporte para pesquisa e filtragem baseadas em lowerCamelCase por caminho. Por exemplo, inserir fc movie
no pop-up Go to Everything retorna a lista de arquivos e membros de arquivos que possuem a string movie em seus nomes e que pertencem ao projeto FollowerC ou FollowerConstants (ambos correspondentes a fc
).
O ReSharper C++ pode fornecer uma visão geral da hierarquia de herança da qual qualquer tipo específico faz parte. Você pode ver os tipos de base e os herdeiros do tipo selecionado e navegar até qualquer um deles com um único clique.
Além disso, o ReSharper C++ vem com uma visualização de hierarquia que serve para visualizar e ajudá-lo a descobrir dependências introduzidas por diretivas #include
.
Use Find Usages para procurar todas as referências de um símbolo específico no código C++ da sua solução.
Assim que a pesquisa for concluída, as ocorrências encontradas serão exibidas em uma janela de ferramentas com opções de agrupamento e filtragem, além de um painel de visualização.
Com o ReSharper C++, você pode visualizar a estrutura do documento atual usando a janela File Structure, que simplifica bastante a navegação em arquivos grandes.
À medida que você muda para outra guia do editor, a janela de ferramentas exibe a estrutura do arquivo correspondente.
A janela de ferramentas To-do Explorer permite exibir, agrupar e filtrar comentários que contêm um dos 3 padrões de tarefas pendentes (Bug, Todo e Not Implemented) e quaisquer padrões personalizados que você queira configurar.
Se você usar a licença completa do ReSharper Ultimate e tiver uma solução multilíngue, o To-do Explorer reunirá itens de tarefas em todos os idiomas com suporte: C#, VB.NET, C++, JavaScript, XAML, HTML etc.
O ReSharper C++ fornece uma variedade de maneiras de gerar código padrão. Além de declarar e definir símbolos com base em seus usos existentes, ele pode criar membros de tipo, blocos de código circundantes e quaisquer trechos de código que você normalmente precisa na sua base de códigos.
O ReSharper C++ oferece uma maneira rápida de gerar membros ausentes, substituindo membros, operadores de igualdade ou relacionais, definições baseadas em declarações existentes, construtores e funções hash e swap.
Basta pressionar Alt+Ins no editor de texto para chamar o menu Generate e ver todas as opções disponíveis.
O ReSharper C++ vem com 29 modelos personalizáveis. Alguns deles são trechos de código regulares, outros são usados especificamente para envolver seleções de código.
Você também pode usar e criar modelos de arquivos. Pressionar Ctrl+Alt+Ins ajuda você a adicionar rapidamente uma classe ao projeto em que você está trabalhando.
Com o ReSharper C++, o formatador de código aprende com o código existente e suas preferências de formatação e estilo de código podem ser compartilhadas com os membros da sua equipe.
O ReSharper C++ permite configurar e aplicar regras de formatação de código que você prefere usar ao trabalhar em uma solução específica.
Como alternativa à busca por todas as opções de formatação de código disponíveis, você pode selecionar um bloco de código e configurar apenas os aplicáveis a esse bloco específico.
Para garantir um estilo de código consistente por toda a sua equipe, você pode salvar suas preferências de formatação e nomeação em um arquivo de configurações e compartilhá-la entre os seus colegas.
O ReSharper C++ também permite definir outras partes de um padrão de codificação de equipe, como a ordem dos modificadores e o valor preferido para inicializadores de ponteiro. Por exemplo, você pode especificar 0
, nullptr
ou NULL
como o estilo inicializador preferido, e o ReSharper C++ respeitará sua escolha quando gerar novos inicializadores para você.
Use as opções do ReSharper (Options | Code Editing | C++ | Naming Style) para selecionar um dos estilos de nomeação C++ predefinidos: STL, Google, LLVM, CamelCase ou Microsoft.
Muitas vezes, é muito mais fácil personalizar as configurações de formatação simplesmente detectando-as no código existente. Use o menu de configurações ReSharper | Edit | Detect formatting para que o ReSharper detecte as configurações de formatação de código. Você verá a janela de ferramentas com os valores detectados, que podem ser revisados e aplicados às configurações do ReSharper na sua máquina. Ou você pode salvá-los em uma camada de configurações compartilhadas pela equipe, para que outros desenvolvedores da sua equipe tenham a mesma configuração de formatação de código ao abrir a solução atual.
Um executor de testes de unidade integrado ao Visual Studio oferece suporte às estruturas Google Test, Boost.Test, Catch e Doctest.
O ReSharper C++ vem com um executor de teste de unidade no Visual Studio que suporta as estruturas Google Test, Boost.Test, Catch e Doctest.
Você pode executar e depurar testes de unidade, bem como adicionar testes a diferentes sessões, diretamente do editor de texto, através do menu contextual Alt+Enter.
O ReSharper C++ fornece as janelas de ferramentas Unit Test Explorer e Unit Test Sessions para exibir, agrupar, filtrar e executar testes de unidade, bem como para criar e gerenciar sessões de testes de unidade.
Se você está criando jogos baseados no Unreal Engine, aproveite o suporte específico para Unreal Engine no ReSharper C++.
O ReSharper C++ acomoda a Convenção de nomenclatura do UE em todas as suas ações, incluindo as refatorações "Introduce Variable" e "Rename", geração de código para getters e setters e muitas outras opções. Ele também fica de olho nos nomes que você usa na sua base de código. Ele realça inconsistências com a convenção de nomenclatura do UE executando inspeções Inconsistent UE naming.
Algumas verificações de análise de código também estão disponíveis para o código baseado em UE, especialmente visando as macros de reflexão do UE ausentes ou incorretamente definidas:
O ReSharper C++ oferece integração perfeita com o UnrealHeaderTool para ajudar você a detectar mais problemas com metadados de classes do Unreal Engine diretamente no editor. Ao trabalhar com um projeto Unreal Engine, o ReSharper C++ executa automaticamente o UnrealHeaderTool no arquivo que você está editando e exibe quaisquer erros ou avisos, assim como em outras inspeções. Veja a integração com o UnrealHeaderTool em ação.
Para ajudá-lo a trabalhar facilmente com as macros de reflexão do Unreal Engine, o ReSharper C++ oferece preenchimento para especificadores de reflexão dentro de macros de reflexão.
A documentação interna para especificadores de reflexão do UE é mostrada no pop-up de Documentação Rápida (Ctrl+Q) quando o cursor está localizado em um especificador.
O ReSharper C++ identifica RPCs pelas palavras-chave Client
, Server
ou NetMulticast
na instrução da declaração UFUNCTION
. Para essas funções, o ReSharper C++ está ciente de que uma função _Implementation
deve ser gerada, bem como uma função _Validate
se WithValidation
for definida. Ele pode gerar ambos se eles estiverem ausentes ou apenas um se apenas um estiver ausente.
Ao navegar até uma definição, ambas as funções (_Validate
e _Implementation
) serão sugeridas. Como alternativa, essas opções também estão disponíveis no menu Alt+Enter também, como "Funções do UE relacionadas".
Quando você usa um símbolo que não está disponível no escopo atual, o ReSharper C++ o realça em vermelho e sugere a adição do #include
ausente, quando possível. Quando o #include
estiver ausente em um arquivo de cabeçalho, ele será inserido antes de .generated.h
, que deve ser o último na lista de inclusões. O código #include
incorretamente colocado é realçado pela inspeção correspondente.
A refatoração Rename em projetos do Unreal Engine atualiza a diretiva de inclusão .generated.h
correspondente com os prefixos A
, F
, E
, T
, S
e U
.
O "novo" modelo postfix para UCLASSes
se expande para uma chamada de função de fábrica apropriada (que registrará o objeto criado no coletor de lixo). Modelos ativos com os nomes correspondentes estão disponíveis para ajudá-lo a gerar rapidamente USTRUCT/UCLASS/UENUM/UENUMCLASS
.
Os arquivos USF do Unreal Engine são baseados em HLSL e contêm o código de sombreamento de várias plataformas. Esses arquivos geralmente incluem caminhos de arquivos virtuais, e o ReSharper C++ pode trabalhar com eles e oferecer suporte a todas as ações usuais.
O SpatialOS Game Development Kit é um fork do Unreal Engine 4 que ajuda você a executar e gerenciar jogos online na nuvem. O ReSharper C++ reconhece CrossServer, SpatialType, NonSpatialType e outros especificadores SpatialOS. Saiba mais.
O ReSharper C++ fornece suporte inicial para HLSL (High-Level Shading Language). O ReSharper C++ realça o código HLSL de acordo com seu esquema de cores padrão e exibe dicas de inserção e dicas de ferramentas para elementos de código com informações de tipo e documentação. Você também pode procurar e navegar rapidamente por estruturas, funções ou parâmetros em toda a sua solução, arquivos referenciados e bibliotecas padrão. E, para melhorar ainda mais a experiência com HLSL, o ReSharper C++ oferece preenchimento de código inteligente, delimitadores correspondentes de inserção automática e muito mais.
Todo o poder da análise de fluxo de controle do ReSharper chega aos arquivos de shader HLSL, incluindo avisos sobre código inacessível, variáveis não inicializadas, saltos de fluxo de controle redundantes, desvios condicionais e muito mais.
Avaliação gratuita por 30 dias disponível