Novidades no ReSharper 2023.2

O ReSharper 2023.2 oferece melhor suporte a C#, trazendo novas inspeções para trabalhar com funções locais e strings brutas, e para resolver problemas comuns do Entity Framework. Esta versão também traz o suporte à refatoração em C++ e mais recursos do C++ 20 e 23. Dentre os recursos que estão estreando no ReSharper 2023.2 estão a capacidade de criar facilmente testes de unidades e navegar por eles, o modo preditivo do depurador e o novo AI Assistant.

Baixar

Avaliação gratuita por 30 dias disponível

Principais atualizações

Melhor suporte a C#

Melhor suporte a C#

O ReSharper 2023.2 traz novas inspeções de código e correções rápidas para trabalhar com literais brutos de string e funções locais, e para lidar com problemas comuns no Entity Framework e diretivas anuláveis redundantes. O suporte antecipado ao C# 12 inclui construtores primários e expressões lambda com parâmetros opcionais. Também melhoramos o suporte do ReSharper a descartes e a recursos descartáveis, e acrescentamos novas dicas dentro das linhas de código e entre elas.

Saiba mais

Navegação e criação de testes de unidades

Os testes de unidades no ReSharper receberam uma grande atualização, com a adição de um recurso que permite que você navegue e crie testes para o seu código de produção!

Para criar um teste, basta invocar a ação Generate Code e selecionar Unit Test ou pressionar Ctrl+U,C. O ReSharper permite que você escolha o nome da classe do teste e até cria um novo projeto com o seu framework de testes preferido (se ele já náo estiver lá). Assim que o teste for criado, você poderá navegar entre o seu código de implementação e o de teste através da ação Navigate To ou pressionando Ctrl+U,F.

Saiba mais

AI Assistant

AI Assistant Acesso limitado

As versões 2023.2 dos IDEs baseados no IntelliJ e das ferramentas para .NET introduzem um importante novo recurso: o AI Assistant. O conjunto inicial de recursos de IA oferece um chat de IA integrado e se entrelaça naturalmente com alguns dos principais fluxos de trabalho de desenvolvimento através de ações de contexto, permitindo que a IA explique trechos selecionados de código, elimine problemas em potencial e gere documentação em XML para você.

Saiba mais

Suporte para C#

Melhor suporte a strings brutas

Acrescentamos novas inspeções e ações de contexto de C# para trabalhar com strings brutas, além de novos assistentes de digitação e novas opções de formatação:

  • Uma inspeção Use raw string para converter strings textuais de múltiplas linhas nas suas representações brutas.
  • Uma inspeção Simplify raw string para remover algumas das aspas e cifrões que se tornarem redundantes.
  • Diversas ações de contexto para adicionar ou remover aspas, chaves de interpolação e cifrões, e para alternar entre representações de linha única e multilinha.
  • Várias opções do formatador de código, permitindo a você alinhar ou indentar o conteúdo dentro de strings brutas.
  • Melhor assistência à digitação ao pressionar as teclas Enter, Delete ou Backspace.

Confira a postagem correspondente no blog para saber mais sobre nosso suporte melhorado a strings brutas.

Inspeções para problemas comuns do Entity Framework

Inspeções para problemas comuns do Entity Framework

Adicionamos várias novas inspeções, correções rápidas e opções contextuais de navegação para problemas comuns que você pode ter ao trabalhar com bancos de dados usando um mapeamento objeto-relacional (ORM) como o Entity Framework.

  • Para ajudar você com possíveis problemas "N+1", temos as inspeções Possible multiple queries to the database for related entities (N+1 problem) e Possible multiple queries to the database (N+1 problem), uma correção rápida correspondente e navegação contextual para frente e para trás para investigar trechos do seu código onde possa haver um problema "N+1".
  • Além de detectar problemas "N+1", introduzimos mais uma inspeção útil ao trabalhar com o Entity Framework: Query can return incomplete data for related entities. Agora também temos uma correção rápida e navegação contextual para frente e para trás, para ajudar você a investigar esse problema.

Leia mais sobre as novas inspeções relativas ao Entity Framework nesta postagem do blog.

Inspeções para trabalhar com funções locais

O ReSharper 2023.2 introduz duas novas inspeções, com correções rápidas correspondentes, voltadas para melhorar a legibilidade do código com funções locais:

  • Uma recomendação para colocar um return ou continue explícito antes de funções locais ao final de um método.
  • Uma sugestão para mover funções locais para o final de um método ou bloco e separá-las do código executável explicitamente com um return, continue ou outra declaração de salto no fluxo de controle.

Nos casos em que você não quiser ou não tiver permissão de alterar o código, o ReSharper 2023.2 mostrará uma dica entre linhas com declarações return; ou continue; antes de funções locais, para ajudar você a compreender o código sem alterá-lo.

Confira esta postagem do blog com mais detalhes sobre as novas inspeções.

Inspeções para diretivas #nullable e anotações de NRT

Inspeções para diretivas #nullable e anotações de NRT

Agora estão disponíveis várias novas inspeções para diretivas #nullable e anotações de NRT:

  • Uma inspeção Redundant nullable directive.
  • Uma inspeção Unused nullable directive.
  • Uma inspeção para alertar sobre casos em que anotações de tipos de referência anuláveis (NRT) contradizem atributos JetBrains.Annotations em membros-base.

Para saber mais sobre essas inspeções, acesse esta postagem no blog.

Navegação melhorada a partir de declarações var

Navegação melhorada a partir de declarações var

Agora, todas as ações de navegação (Go to…, Find Usages, etc.) sugerem os tipos subjacentes ao navegar a partir de var para tipos comuns usados para envolver outros tipos. Por exemplo, o ReSharper sugerirá navegar até Person ao usar a ação Go to declaration a partir de uma palavra-chave var de uma variável do tipo ImmutableArray<Person>?.

Você pode saber mais nesta postagem no blog.

Construtores primários Prévia do C# 12

Na versão 2023.2, introduzimos o suporte a construtores primários para classes não record e structs da prévia do C# 12. Há várias inspeções que detectam esses tipos, nas quais a inicialização pode ser expressa com os novos construtores primários e pode sugerir aplicar uma correção rápida para reduzir muito a quantidade de repetições de código.

Às vezes, é preciso tornar a inicialização do tipo menos trivial e não é mais possível expressá-la através de um construtor primário. Para esses casos, introduzimos algumas ações de contexto para reverter uma substituição de parâmetros de construtores primários por construtores e campos comuns.

Para ver todos estes recursos para construtores primários e muitos outros em ação, confira esta postagem separada no blog.

Suporte a valores-padrão de parâmetros em lambdas

Suporte a valores-padrão de parâmetros em lambdas Prévia do C# 12

Como parte do nosso trabalho de suporte às atualizações da linguagem C# na versão 12, estamos introduzindo o suporte a valores-padrão de parâmetros em expressões lambda. Além do conjunto-padrão de mensagens de alerta associadas ao reconhecimento dessa sintaxe, também ajustamos uma inspeção já existente, The parameter has the same default value, para levar em conta os valores-padrão de parâmetros em lambdas. Mais informações estão disponíveis aqui.

Melhor suporte a recursos descartáveis

O ReSharper 2023.2 introduz duas novas inspeções de código, projetadas para controlar melhor o descarte de um objeto:

  • A inspeção Return of a variable captured by ‘using’ statement alerta você quando o objeto retornado for imediatamente descartado.
  • A inspeção Return of a task produced by ‘using’-captured object identifica cenários nos quais é produzida uma Task por um objeto que foi capturado por uma declaração "using" e retornado logo em seguida.

Também melhoramos o recurso Generate dispose pattern para dar suporte à interface IAsyncDisposable e poder gerar um método "async" para liberar os recursos.

Você encontra mais detalhes desses acréscimos aqui.

Melhor suporte ao descarte em C#

A análise de código recebeu diversas novas adições úteis no suporte ao descarte em C#:

  • Agora você pode verificar rapidamente os nomes e os tipos dos valores descartados, com o recurso Push-to-Hint.
  • Há um alerta The _ name is typically reserved for local parameters without usages que adverte sobre variáveis e parâmetros com o nome de _ que estão efetivamente em uso. Eles parecem ser valores "descartados", mas na verdade, representam bem o contrário disso.
  • Está disponível uma inspeção Use discard assignment, que substitui uma variável e parâmetro sem uso por um descarte.

Confira esta postagem do blog para saber mais sobre o melhor suporte ao descarte.

Dicas de inserção

Novas dicas de inserção para melhor legibilidade do código

Dicas de inserção com os nomes dos componentes de tuplas

Ao passar um valor para um argumento ou tipo de retorno de tupla, o C# permite que você omita os nomes dos componentes. Porém, sem os nomes, fica mais difícil entender o significado de cada componente sem olhar o seu tipo-alvo. Por exemplo, muitos desenvolvedores de software terão que verificar o local onde uma tupla (null, false) foi atribuída para entenderem o significado dos seus componentes.

É aqui que as dicas de inserção podem ajudar você! O ReSharper 2023.2 mostra dicas de inserção com os nomes dos componentes da tupla quando esses nomes não forem já evidentes pela expressão dos componentes, tornando o seu código mais fácil de ler e entender de relance.

No caso de componentes nulos e padrão, o ReSharper 2023.2 mostrará dicas sobre seus tipos-alvo, mesmo que o componente-alvo não tenha um nome explícito, mas fará uma exceção para os tipos string e objeto, pois eles geralmente não são muito informativos.

Outra situação comum na qual nomes podem melhorar a legibilidade é a de padrões de desconstrução nos quais um nome explícito ou é conhecido a partir do método Deconstruct ou a partir dos componentes de origem da tupla. Essas dicas foram desenvolvidas para dar a você um contexto adicional quando o próprio padrão não contiver dados suficientes para se entender qual é a correspondência, como em value is ({ }, true, null).

Suporte melhorado a diretivas #pragma warning

Suporte melhorado a diretivas #pragma warning

Diretivas de pragma permitem que você desative ou restaure alertas do compilador através dos seus identificadores. Porém, embora esses identificadores sejam uma ótima maneira de se comunicar com o compilador, podem ser difíceis de serem compreendidos por desenvolvedores humanos. Sem um conhecimento abrangente, pode não ser claro ao que um identificador como CS0168 ou CS0618 se refere ou o que requer atenção.

Adornos para LINQ

Adornos para LINQ

Consultas de LINQ costumam ser complexas e envolver diversas transformações e projeções. E depurar consultas complexas de LINQ pode demorar bastante, especialmente quando se lida com grandes conjuntos de dados. Para ajudar você a inspecionar facilmente a saída de cada etapa da consulta, agora o ReSharper mostra os resultados intermediários como dicas de inserção durante a depuração.

Com adornos no editor mostrando resultados intermediários, agora você deve ser capaz de identificar rapidamente se há algum valor inesperado ou corrigir as transformações que acontecerem durante o processo.

Suporte para C++

Safe Delete

Safe Delete

O ReSharper C++ introduz a refatoração Safe Delete para permitir que você remova símbolos do código-fonte com segurança. Essa refatoração está disponível para classes, funções, variáveis, enumeradores, namespaces e até mesmo conceitos.

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.

Mais recursos do C++ 20 e 23

Mais recursos do C++ 20 e 23

Esta versão traz suporte a diversos novos recursos da linguagem, incluindo if consteval, módulos-padrão de biblioteca do C++ 23, o atributo [[no_unique_address]] e operator()/operator[] estático.

Novidades no ReSharper C++ 2023.2

Formatação de código

Adornos para LINQ

Formatação de chamadas a APIs fluidas

O ReSharper 2023.2 introduz algumas novas opções de reformatação de código em C#, projetadas para melhorar a legibilidade de chamadas de métodos encadeadas.

A primeira opção de formatação do código controla se vem uma quebra de linha antes da primeira chamada a um método. A segunda opção é para situações nas quais se misturam invocações a métodos e a propriedades. Ela determina se deve ou não ser inserida uma quebra de linha depois da invocação da propriedade.

AI Assistant Acesso limitado

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.

Chat com o AI Assistant

Chat com o AI Assistant

Como padrão, o AI Assistant dentro do ReSharper reconhece o seu ambiente de desenvolvimento: as linguagens de programação, os frameworks, as bibliotecas e as tecnologias usadas na solução. Isso permite que a IA gere respostas mais precisas e específicas às suas consultas.

A opção Smart chat permite que o AI Assistant referencie arquivos e símbolos específicos, recupere fragmentos de código ou as últimas alterações e procure usos de métodos específicos. Como resultado, ele pode oferecer sugestões ainda mais precisas.

Ações de contexto

Ações de contexto

Com o plug-in do AI Assistant instalado, as ações de contexto do ReSharper oferecem diversas opções que usam IA. O AI Assistant pode ajudar você a:

  • Explicar o código selecionado
  • Identificar problemas em potencial
  • Criar código para métodos não implementados
  • Gerar documentação em XML

Depurador preditivo Beta Visual Studio 2022

O modo preditivo do depurador, que estamos introduzindo no ReSharper 2023.2, é capaz de prever todos os estados possíveis deflagrados pela execução de um programa, sem ter que executá-lo de fato, o que torna possível:

  • Mostrar os valores esperados das variáveis.
  • "Silenciar" visualmente as partes do programa que não serão executadas.
  • Avisar você de casos nos quais continuar a execução resultará em uma exceção.

O depurador preditivo oferecerá um novo nível de insight sobre a execução do seu programa. Ele também permitirá a você experimentar valores diferentes e investigar problemas no seu código sem precisar reiniciar o processo de depuração a cada alteração.

Você pode ativar o depurador preditivo indo até ReSharper | Options | Tools | Debugger | Editor Integration | Predictive debugger | Show predicted values (beta).

Saiba mais

No momento, este depurador está no estágio de beta, o que significa que o seu feedback é crucial para que ele atinja seu pleno potencial. Não deixe de relatar quaisquer bugs que você encontrar no nosso rastreador de issues, juntamente com quaisquer sugestões ou solicitações que você tiver.

Descompilador

Assembly diff

O ReSharper 2023.2 oferece uma maneira de fazer uma comparação detalhada entre duas assemblies. Este recurso é especialmente útil ao inspecionar as diferenças entre duas versões de uma assembly específica e procurar por vulnerabilidades em potencial que possam ter sido introduzidas em uma versão mais recente.

Para comparar assemblies, clique em Compare Two Assemblies na janela de ferramentas Assembly Explorer. Tanto aplicativos em um único arquivo quanto arquivos .exe ou .dll podem ser selecionados para comparação.

Clique aqui para saber mais sobre este recurso.

Desempenho

No ReSharper 2023.2, revisamos nossa abordagem do cache de dados exigido pelo IDE para o funcionamento de seus sistemas. Esta revisão, apoiada por inúmeros testes de desempenho, resultou em uma redução perceptível do espaço em disco consumido por cada solução que você abrir. Em termos práticos, isso significa, no geral, menos tempo gasto fazendo leituras e gravações no disco e tempos mais rápidos de carregamento das soluções.

Outra alteração foi a refatoração da lógica interna de construção de componentes do ReSharper, que levará a solução a ser carregada mais rapidamente. Clique aqui para saber mais.

Diversos

Dynamic Program Analysis

  • Antes, a DPA às vezes contabilizava erroneamente pausas para depuração como tempo de execução, levando a falsos positivos de problemas de banco de dados. Este problema foi corrigido na versão 2023.2.
  • Além disso, antes a DPA podia realçar grandes blocos de código se a pilha de chamadas correspondente contivesse alocações de memória por funções lambda. Agora, o realce é mais granular.
Baixar

Avaliação gratuita por 30 dias disponível