Novidades do ReSharper C++ 2023.3

O ReSharper C++ 2023.3 traz um novo verificador incorporado de gramática e ortografia, complementação de código e Find Usages para código inativo, atualizações no suporte a C, C++ e HLSL, e muito mais. O lançamento do ReSharper C++ 2023.3 também recebeu o destaque de uma grande atualização do JetBrains AI Assistant.

Baixar

Avaliação gratuita por 30 dias disponível

O AI Assistant já saiu da versão prévia Disponibilidade Geral

Agora o AI Assistant da JetBrains está em disponibilidade geral, com diversos recursos novos e melhorados para aumentar a sua produtividade. Nosso último conjunto de melhorias inclui uma melhor sensibilidade ao projeto nas ações de IA e uma biblioteca de prompts.

Use o AI Assistant no ReSharper C++ como recurso suplementar com uma assinatura do JetBrains AI Service.

Atualizações para o HLSL e o Unreal Engine

O HLSL 2021 introduziu o suporte a modelos semelhantes aos do C++ para funções e tipos de dados. A última atualização do ReSharper C++ traz suporte total a modelos do HLSL.

O ReSharper C++ 2023.3 traz o suporte ao tipo incorporado RayQuery do HLSL e melhora a complementação de código sugerindo as sinalizações correspondentes.

Uma nova inspeção ajuda você a não cair em uma das armadilhas comuns da macro auxiliar AddDynamic. Agora você receberá um aviso quando uma função delegada dinâmica não estiver marcada com a macro UFUNCTION.

Se você ainda perceber que escreve código boilerplate de vez em quando, não esqueça que está disponível o atalho Alt+Insert para gerar automaticamente membros de tipos comuns. No ReSharper C++ 2023.3, refinamos a geração de funções de hash para seguirem as convenções do Unreal Engine.

Se você estiver interessado em um IDE multiplataformas independente para desenvolvimento com Unreal Engine, considere o Rider. O suporte para Unreal Engine no Rider e no ReSharper C++ está alinhado, e você pode esperar as mesmas melhorias na atualização do Rider 2023.3.

Suporte a C e C++

Se você precisar verificar se algum atributo específico está disponível na versão atual do padrão ou do compilador, o teste de recursos do C++ 20 está aí para resolver o problema. Usando __has_cpp_attribute(operand) nas condições do pré-processador, você pode testar se o compilador reconhece o atributo referenciado por aquele operando. Agora o ReSharper C++ trata __has_cpp_attribute corretamente, para dar um melhor suporte a anotações de atributos nas bibliotecas-padrão do C++.

Introduzimos o suporte para o pragma de pacotes usado com a palavra-chave __pragma. Às vezes, a sintaxe __pragma (pack) é usada dentro de definições de macros, já que não é possível usar diretivas #pragma nessas definições. Em casos como esse, agora o ReSharper C++ calcula corretamente o tamanho das estruturas empacotadas, para que você possa confiar nos resultados da análise de código.

O ReSharper C++ adiciona o suporte a vários recursos do C:

  • O qualificador de tipos restrict do C 99, que pode ser usado em declarações de ponteiros.
  • Dedução de tipos, constexpr e nullptr do C23.

Também introduzimos o suporte a várias novas funções intrínsecas do clang, como __is_const(), __is_member_pointer() e outras, para que o ReSharper C++ trabalhe melhor com código multiplataformas.

Para o desenvolvimento multiplataformas em C e C++, você pode experimentar uma versão inicial de demonstração do IDE stand-alone CLion Nova. Ele usa o ReSharper C++ e é absolutamente gratuito para usar neste estágio — basta se registrar, começar a programar e nos mandar o seu feedback!

Verificação gramatical e ortográfica

O JetBrains Grazie é o novo verificador gramatical e ortográfico embutido no ReSharper. O Grazie tem suporte a mais de 20 idiomas e detecta erros de linguagem natural dentro das linguagens de programação com suporte no ReSharper (C#, C++, VB.NET), em linguagens de marcação (HTML, XML, XAML) e em comentários. Para adicionar outros idiomas ao Grazie, vá até Options | Grammar and Spelling | General no ReSharper.

Observe que no momento, a verificação gramatical não está disponível em comentários do doxygen.

Trabalho com código inativo

Ao usar código específico de uma plataforma ou configuração, pode ser comum você se ver editando blocos de código atualmente inativos dentro de branches condicionais do pré-processador. Anteriormente, a complementação em código inativo oferecia apenas macros. No ReSharper C++ 2023.3, melhoramos a complementação de código nessas situações, incluindo símbolos do escopo global.

Find Usages agora encontra possíveis usos em código inativo e em corpos de macros. Anteriormente, se você quisesse encontrar esses usos, teria que usar Find Usages Advanced e procurar ocorrências exatas. Agora os resultados de Find Usages incluem usos potenciais em corpos de macros e código inativo, como padrão. Esses usos são agrupados em seções separadas, para distingui-los de usos em código ativo.

Análise de código

Você pode usar atributos do C++ específicos do ReSharper para que este analise a sua solução com mais precisão e insight. No ReSharper C++ 2023.3, adicionamos os prefixos [[jetbrains::...]] e [[rscpp::...]] aos atributos já existentes [[jetbrains::format]], [[jetbrains::guard]] e [[jetbrains::has_side_effects]].

O novo atributo [[jetbrains::pass_by_value]] permite a você suprimir a inspeção de parâmetros de funções Pass value by const reference. Descubra mais.

Introduzimos um conjunto de inspeções para o uso incorreto da palavra-chave export em módulos do C++ 20. Agora o ReSharper C++ sugere remover "export" quando esta declaração já estiver dentro de outro "export" ou quando ela não fizer parte de uma unidade de interface de módulo e não puder ser exportada. Se você tentar criar um modelo com a declaração export, em vez de exportar a declaração do modelo, você também receberá uma sugestão de mudar a declaração de lugar.

Atualizamos o binário clang-tidy incluído para o Clang 17, trazendo as atualizações da última versão da LLVM.

Algumas verificações do clang-tidy geram mais detalhes na saída, além do texto de alerta. Agora o ReSharper C++ mostra essas notas adicionais na dica de ferramenta.

Uma nova inspeção alerta sobre o uso de literais com vários caracteres. Esses literais têm suporte condicional, com valores definidos pela implementação, e devem ser usados com cautela em código que se queira portar.

Agora o ReSharper C++ sugere uma correção rápida para remover operadores condicionais redundantes e simplificar expressões condicionais ternárias.

Assistência para codificação

O menu Alt+Insert Generate ajuda você a criar código reutilizável rapidamente. No ReSharper C++ 2023.3, adicionamos à lista uma nova ação, permitindo que você gere um destrutor.

Ao ser invocada em uma classe polimórfica, essa ação usará configurações de estilo de sintaxe para inserir os especificadores virtual e/ou override necessários. Você pode configurar o estilo do corpo do destrutor gerado na página de opções Code Editing | C++ | Code Generation.

As diretivas #pragma region e #pragma endregion permitem que você especifique um bloco dobrável de código. De forma semelhante a outras diretivas de correspondência, agora você pode saltar entre as duas usando a ação Go to Declaration em uma diretiva #pragma ou uma nova dica de inserção com o nome da região.

Além disso, agora a janela File Structure permite que você dobre regiões e navegue até os blocos correspondentes de código, de forma conveniente.

No código em C, deve-se usar void na lista de parâmetros de uma função para indicar que aquela função não aceita nenhum argumento. Agora o ReSharper C++ preserva esse void especial quando você invoca a refatoração Extract method ou Change signature, gera uma definição para a função ou cria uma nova função a partir de seu uso.

Agora as dicas de inserção de referências têm um texto [>>] separado, para que você possa identificar referências de encaminhamento em um relance.

A nova ação Generate inline definitions permite que você gere rapidamente os corpos de várias funções ao mesmo tempo. Essa nova ação é semelhante à já existente Generate definitions e fica disponível quando se selecionam várias declarações de funções ou um nome de classe no editor.

Quando você invoca a refatoração Introduce variable ou Introduce field em uma expressão aninhada, agora o ReSharper C++ permite que você escolha explicitamente a expressão-alvo, em vez de usar automaticamente a expressão mais externa.

Para melhorar a experiência de navegação no código, agora os símbolos que se originaram de substituições de macros ficam ocultos de Go to e da janela File Structure. Isso é útil com macros que introduzem muitos símbolos auxiliares durante sua expansão, como declarações de casos de testes em frameworks populares de testes de unidades.

Formatação de código

O ReSharper C++ 2023.3 introduz várias novas opções de formatação:

  • Quebra de linha antes de -> em tipos de retorno à direita.
  • Quebra de linha depois de -> em tipos de retorno à direita.
  • Espaços dentro de blocos vazios.
  • Permitir comentários depois de {.

Também atualizamos o binário do clang-format incluído para o Clang 17 e implementamos o suporte à configuração InsertNewlineAtEOF do clang-format, tanto ao importar as configurações do formatador de um arquivo de configuração .clang-format quanto ao usar o clang-format em vez do formatador incorporado.

Confira as Novidades no ReSharper para saber mais sobre as outras alterações introduzidas nesta versão.

Baixar

Avaliação gratuita por 30 dias disponível