O ReSharper C++ 2023.2 introduz a refatoração Safe Delete para permitir que você remova símbolos do código-fonte com segurança. Para projetos C++ modernos, vários novos recursos do C++20 e do C++23 agora são suportados, incluindo módulos de biblioteca padrão do C++23. Esta versão também vem com o AI Assistant do ReSharper, projetado especificamente para ajudar você nas tarefas de programação.
Avaliação gratuita por 30 dias disponível
O AI Assistant não é distribuído juntamente com o ReSharper e precisa ser instalado separadamente. Por enquanto, há uma lista de espera para o acesso ao recurso do AI Assistant.
Saiba mais sobre o AI Assistant e sobre como instalá-lo através do Toolbox App ou do instalador do dotUltimate na nossa página de ajuda na Web.
O ReSharper C++ 2023.2 traz o AI Assistant do ReSharper - um chat orientado por IA projetado especificamente para responder a perguntas de programação e ajudar você na solução de problemas, refatoração, documentação e outros workflows de desenvolvimento.
O AI Assistant do ReSharper leva em consideração a linguagem e as tecnologias usadas no seu projeto. Essa percepção de contexto adapta suas respostas logo de cara, economizando tempo e esforço.
Sinta-se à vontade para incluir partes do código-fonte nas suas consultas. O ReSharper detectará o código que você enviou ou colou no chat e o formatará adequadamente, enquanto o modelo de IA explicará a lógica por detrás do código e ajudará você a refatorar, encontrar problemas ou documentá-lo.
A instrução if consteval
é um novo recurso de avaliação constante no C++23 que desenvolve ainda mais a ideia de consteval
e std::is_constant_evaluated()
do C++20. Se a avaliação da instrução if consteval
ocorrer durante uma avaliação de constante, a seguinte instrução composta será executada. Caso contrário, o branch else
será executado.
O ReSharper C++ apresenta suporte para if consteval
e traz um conjunto de inspeções relacionadas:
consteval if
é sempre constante.std::is_constant_evaluated
sempre é avaliada como uma constante.if
pode ser substituído por if consteval
. Agora, o ReSharper C++ oferece suporte aos módulos nomeados std
e std.compat
introduzidos na biblioteca padrão do C++23. Se você usa o Visual Studio 17.6 ou posterior, agora pode usar import std
ou import std.compat
para importar toda a biblioteca padrão em vez de usar um cabeçalho pré-compilado ou incluir cabeçalhos específicos da biblioteca padrão.
Antes do C++23, todos os operadores tinham que ser funções-membro não estáticas. No entanto, os operadores de chamadas geralmente são usados com objetos de função sem membros, e permitir que os operadores sejam estáticos nesse caso pode resultar em um código mais eficiente. O C++23 permite que operator()
e operator[]
sejam estáticos.
Temos trabalhado arduamente para aprimorar o suporte a módulos do C++20, corrigindo vários problemas secundários em projetos do mundo real que usam módulos. Ao processar módulos internamente, o ReSharper C++ agora implementa o descarte de declarações que não podem ser acessíveis por declaração, melhorando significativamente o desempenho em módulos que incluem muitos cabeçalhos no fragmento de módulo global.
Além disso, implementamos várias alterações para oferecer melhor suporte a módulos em projetos CMake. Agora, o ReSharper C++ reconhece arquivos .cppm
como interfaces de módulo e inclui suporte experimental para módulos localizados fora da pasta do projeto.
O novo atributo [[no_unique_address]]
do C++20 indica que um endereço exclusivo não é necessário para um membro de dados não estático de uma classe, permitindo que o compilador organize os membros da classe de uma forma mais eficiente. Agora, o ReSharper C++ leva [[no_unique_address]]
em consideração ao calcular o tamanho de um objeto.
O ReSharper C++ 2023.2 também implementa o relatório de defeitos do C++20 recentemente aceito, que permite a inicialização de um array de char
ou unsigned char
com um literal de string UTF-8.
O ReSharper C++ introduz a refatoração Safe Delete para permitir que você remova símbolos do seu código-fonte com segurança. Essa refatoração está disponível para classes, funções, variáveis, enumeradores, namespaces e até mesmo conceitos.
Para invocar a refatoração, coloque o cursor no símbolo que você deseja excluir e pressione Alt+Del ou selecione Safe Delete no menu Refactor This.
Antes de excluir um símbolo, o ReSharper C++ pesquisa seus usos e permite visualizar as alterações no código-fonte, para que você possa ter certeza de que todas as remoções são intencionais. Se você tentar excluir uma entidade complexa, como uma classe ou um namespace, o ReSharper C++ verificará recursivamente os usos de todos os seus membros.
Este lançamento traz melhorias de desempenho para indexação de Blueprints. Na primeira vez que você abre um projeto, o ReSharper C++ indexa todos os ativos do Blueprint para ativar recursos como Find Usages e mostrar os valores dos dados serializados diretamente no o editor de texto.
Antes, o ReSharper C++ indexava esses recursos com a mesma prioridade do seu código C++, o que significava que demorava mais até que o projeto estivesse pronto para funcionar. O ReSharper C++ 2023.2 indexará recursos em segundo plano depois de indexar seu código C++ sem interferir no seu trabalho.
Melhoramos a complementação inteligente para tipos de wrapper com a semântica de atribuição padrão. Por exemplo, ao atribuir a uma variável do tipo TEnumAsByte
, a complementação sugerirá enumeradores do tipo de enumeração subjacente.
Para projetos do Unreal Engine 5.1, introduzimos suporte para a macro UE_INLINE_GENERATED_CPP_BY_NAME
, que permite integrar arquivos inline gerados no seu módulo para melhorar o tempo de compilação.
Com a complementação aprimorada de código dependente, agora você obterá itens de complementação quando o tipo for restrito por um conceito ou uma característica. Agora, o ReSharper C++ considera as características de tipo padrão std::is_same/std::is_base_of
, seus aliases de valor _v
, os conceitos correspondentes std::same_as/std::derived_from
e a característica TIsSame
do Unreal Engine.
Para sugestões de complementação de código mais úteis, o ReSharper C++ agora também extrai requisitos de tipo e valor de cláusulas requires
, if constexpr
e SFINAE.
Há duas novas ações de contexto complementares para ajudar você a mover uma restrição de parâmetro de template para a cláusula requires
e converter uma cláusula requires
em uma restrição de parâmetro de template.
Se você tiver uma chamada recursiva, o ReSharper C++ irá marcá-la na medianiz, tornando-a mais visível.
A lista de complementação de código agora filtra os identificadores reservados e os sugere somente depois de ReSharper C++. Isso significa que você não precisa mais ler as sugestões das bibliotecas padrão, a menos que precise delas.
O ReSharper C++ 2023.1 introduziu realce e formatação adequados para substituição de macros no pop-up Quick Documentation e dicas de ferramentas ao passar o mouse. Na versão 2023.2, essas melhorias também funcionarão para definições de macro e Informações do parâmetros na complementação de código.
Melhoramos o mecanismo de avaliação para oferecer suporte à inicialização agregada de arrays constexpr
.
Melhoramos a compatibilidade com os compiladores GCC e Clang e com as bibliotecas padrão libc++/libstdc++. Isso inclui suporte para mais recursos integrados, como __integer_pack
, __is_convertible/__is_nothrow_convertible
, e atualizações para os compatíveis anteriormente.
Quando você especifica a direção do parâmetro com o atributo [in]
, [in,out]
ou [out]
do comando param, do Doxygen, as dicas de ferramentas agora os obtêm a partir do seu comentário.
O ReSharper C++ 2023.2 adiciona uma nova inspeção que detecta o desreferenciamento redundante e operadores address-of. Ela oferece várias correções rápidas para simplificar o acesso de membros e remover operadores redundantes.
Outra nova inspeção realça argumentos de template redundantes que correspondem ao argumento de template padrão correspondente e podem ser omitidos.
Uma nova inspeção de compatibilidade avisa sobre declarações de enumerações ao estilo C sem um tipo subjacente, que são proibidas pelo padrão C++, mas aceitas pelo MSVC, potencialmente levando a código sem portabilidade.
Agora, o ReSharper C++ realça as diretivas de pré-processador de diagnóstico #error
e #warning
de acordo com seu nível de gravidade.
Também atualizamos o binário clang-tidy incluído para o Clang 16, fornecendo novas verificações e correções.
O MSVC pode usar o pré-processador tradicional ou o novo em conformidade com o padrão, dependendo do valor do argumento /Zc:preprocessor
do compilador. O ReSharper C++ agora lê o valor desse argumento a partir das propriedades do projeto e ajusta o comportamento do pré-processador incorporado de acordo.
O ReSharper C++ 2023.2 traz várias melhorias em Go to declaration para uma navegação de código mais consistente e direta sem etapas extras:
typedef
em vez de mostrar o menu com todas as declarações. #include
abre a pasta. Além disso, Type of symbol agora está disponível em símbolos não declaradores. A maneira como ele funciona lá é semelhante à de Go to declaration.
Ao gerar comentários de documentação, o ReSharper C++ agora ajustará o template de documentação de acordo com o estilo de comentário do editor. Para /**
, a assistência de digitação irá gerar o comentário no estilo /** */
e, para ///
, o comentário estará no estilo ///
.
Este lançamento traz várias melhorias para a formatação dos membros do campo de bits. As opções para alinhar inicializadores e nomes de declaração em colunas agora oferecem suporte a campos de bits. Há também duas novas configurações de formatação para espaços antes e depois dos dois pontos em declarações de campo de bits e para alinhamento de tamanhos de campos de bits em colunas.
Uma nova opção de assistência de digitação permite desativar a geração de comentários de documentação para evitar conflitos com o gerador integrado do Visual Studio (ReSharper | Options | Environment | Editor | Behavior | C++, C, HLSL | Generate documentation comments).
Também atualizamos o binário clang-format incluído e corrigimos o mecanismo clang-format para evitar que ele remova a nova linha no final de um arquivo.
Confira as Novidades do ReSharper para saber mais sobre as outras alterações introduzidas nesta versão. Por exemplo, o ReSharper apresenta o depurador preditivo, que prevê todos os estados possíveis acionados pela execução de um programa sem precisar realmente executá-lo.
Avaliação gratuita por 30 dias disponível