Novidades no ReSharper 2024.1

No ReSharper 2024.1, melhoramos ainda mais o suporte a C#, para incluir mais sugestões para converter código em expressões de coleções e dar alertas quando uma coleção for modificada enquanto estiver sendo iterada em loops foreach. Agora o suporte ao Razor resolve referências para as diretivas @addTagHelper e @removeTagHelper. A experiência e a interface de usuário ao editar regras personalizadas de nomeação foram muito aperfeiçoadas.

Baixar

Avaliação gratuita por 30 dias disponível

Suporte para C#

Mais conversões para expressões de coleção

Mais conversões para expressões de coleção

Você agora receberá sugestões para converter mais construções do seu código-fonte em expressões de coleção do C# 12, como um array vazio ou a declaração e inicialização de ImmutableArray.

Análise Collection was modified

Análise Collection was modified

Adicionamos a nova inspeção Possible 'System.InvalidOperationException: Collection was modified', que avisa quando uma coleção for modificada ao ser iterada dentro de loops foreach, já que essa modificação pode levar a uma exceção em tempo de execução. Essa análise leva em consideração casos nos quais há uma saída do loop depois da modificação da coleção. Esses casos não provocarão o alerta.

Esta inspeção vem com uma correção rápida correspondente, para ajudar você a resolver esse problema instantaneamente.

Atualização em Generate | Formatting Members

Atualização em Generate | Formatting Members

Generate | Formatting Members permite que você gere código padronizado que substitui o método ToString() e retorna uma string que faz sentido para os seus tipos. A partir da versão 2024.1, este recurso oferece suporte a mais tipos, tais como ISpanFormattable, IUtf8SpanFormattable e IFormattable.

Suporte aperfeiçoado a recursos descartáveis em métodos assíncronos

Suporte aperfeiçoado a recursos descartáveis em métodos assíncronos

  • [MustDisposeResource] Melhoria nas anotações: agora a análise do código em C# garante que os recursos retornados por métodos assíncronos, incluindo os envolvidos por Task<IDisposable> e ValueTask<IDisposable>, sejam descartados corretamente, ajudando a evitar o descarte acidental da própria tarefa.
  • Valores de retorno semelhantes a tarefas: Na versão 2024.1, a análise correta de valores de retorno semelhantes a tarefas garante que o recurso esperado seja verificado quanto ao descarte e também inclui recursos obtidos através de .ConfigureAwait(...), .AsTask() ou .Result.
Atualizações na refatoração Change Signature

Atualizações na refatoração Change Signature

Estas são algumas das melhorias que fizemos na refatoração Change Signature:

  • Esta refatoração agora tem suporte a métodos Deconstruct. Você pode adicionar, remover, reorganizar e renomear parâmetros e essas alterações se refletirão tanto na declaração quanto nos usos do método.
  • Agora a complementação de código está disponível para parâmetros de tipos. Isso significa que quando você precisar especificar um tipo para List<>, por exemplo, você poderá usar a complementação de código para selecionar facilmente o tipo desejado, como int.
  • Os namespaces dos tipos são abreviados automaticamente ao adicionar ou atualizar parâmetros. Isso ajuda a manter o código limpo e simplificado depois de aplicar a refatoração. Por exemplo, se você especificar o tipo System.Collections.Generic.List<System.Int16> no diálogo Change Signature, ele será abreviado automaticamente para List<short> no código resultante.
  • Esta refatoração agora tem suporte a mais recursos das últimas versões do C#, como os modificadores in e ref readonly e tipos record.
Atualizações na refatoração Make Static

Atualizações na refatoração Make Static

Nesta versão, a refatoração Make Static tem suporte a parâmetros de construtores primários. Eles aparecem na lista Introduce parameters e têm um ícone separado para ajudar a distingui-los facilmente. Esta refatoração também está disponível para funções locais.

Suporte à biblioteca protobuf-net

Agora a análise de código oferece suporte ao atributo ProtoContract e ao enum ImplicitFields, da biblioteca protobuf-net. Ambos podem ser usados para marcar membros implicitamente usados para serialização. Como resultado, esses membros não são mais sinalizados com alertas de unused members

Suporte para Razor

Resolução de referências para as diretivas @addTagHelper e @removeTagHelper

Resolução de referências para as diretivas @addTagHelper e @removeTagHelper

Agora o ReSharper resolve referências para nomes de assemblies especificados dentro das diretivas @addTagHelper e @removeTagHelper nas visualizações do Razor. Como resultado, agora você pode desfrutar da complementação de código, da capacidade de localizar usos e da facilidade de navegação pelo código.

Agora o ReSharper considera quaisquer nomes não resolvidos de assemblies como sendo erros e os realça em vermelho, para chamar a sua atenção para eles.

Suporte para C++

Suporte para C++

Estas são algumas melhorias notáveis no suporte a C++:

  • A implementação reformulada dos módulos do C++20 melhora o desempenho e fornece suporte a partições de módulos internos.
  • Change Signature traz novos recursos, incluindo a possibilidade de mudar o tipo de um parâmetro entre um ponteiro, uma referência e um tipo de valor.
  • Call Tracking agora tem suporte a cadeias de chamadas para fora.
  • Agora você pode facilmente personalizar o estilo dos comentários de documentação gerados. Além disso, estão disponíveis inspeções gramaticais dentro dos comentários da documentação.
  • Já está disponível o suporte ao framework Slate UI, do Unreal Engine.

Saiba mais sobre as atualizações para C++ nas Novidades do ReSharper C++ 2024.1.

Desempenho

Modo de alta utilização de recursos na análise de toda a solução

Modo de alta utilização de recursos na análise de toda a solução

Estamos refinando ativamente o modo de alta utilização de recursos na análise de toda a solução. Isso reduzirá significativamente o tempo gasto na análise, usando o paralelismo de CPUs de forma mais eficiente. Aperfeiçoamos o perfil de alocação de memória das atividades de análise de código, para minimizar o tempo gasto na coleta de lixo. Esse processo de refinamento ainda está em andamento, mas gostaríamos que você ativasse esse modo e nos desse o feedback sobre a sua experiência.

Refatoração Rename mais rápida

Ficou mais fácil e eficiente renomear elementos do seu código. Esta mudança também afeta outros componentes essenciais do ReSharper, levando a melhorias de desempenho em vários recursos, incluindo o Find Usages.

Refatoração Move to Another Type mais rápida

O desempenho da refatoração Move to Another Type com membros estáticos também melhorou significativamente ao lidar com classes grandes.

Formatação de código

Experiência e interface de usuário aperfeiçoadas para regras personalizadas de nomeação

As mudanças devem tornar mais fácil trabalhar com regras avançadas de nomeação e observar quaisquer regras que tenham sido importadas de arquivos EditorConfig.

Configuração "Remove whitespace on blank lines"

Configuração Remove whitespace on blank lines

Esta nova configuração de formatação permite que você deixe espaços em branco em linhas em branco ou os remova.

Descompilador

Uma nova janela de ferramentas dedicada ao diff de assemblies

Nova janela de ferramentas dedicada ao diff de assemblies

A versão 2024.1 do ReSharper introduz a nova janela de ferramentas Assembly Diff. Ela traz consigo algumas mudanças:

  • A função de comparação de assemblies, pacotes do NuGet, pastas e arquivos .zip foi movida do Assembly Explorer para a janela de ferramentas Assembly Diff.
  • O seletor Diff mode e os botões Compare e Diff Options foram deslocados para a barra Actions da janela de ferramentas Assembly Diff.
Suporte ao formato de empacotamento WebCIL

Suporte ao formato de empacotamento WebCIL

Agora o descompilador dentro do ReSharper tem suporte ao formato de empacotamento WebCIL para WebAssemblies. Esse suporte abrange:

  • Descompilação para WebCIL.
  • A capacidade de visualizar arquivos .wasm no Assembly Explorer.
  • Subárvores de metadados para nós de WASM no Assembly Explorer, incluindo cabeçalhos de WASM e WebCIL.

Suporte à MAUI no dotTrace, dotMemory e dotCover dotUltimate

Agora também já está disponível o suporte a aplicativos de desktop em MAUI e de macOS usando .NET no dotTrace, dotMemory e dotCover dentro do Visual Studio.

Frameworks-alvo com suporte:

  • MAUI Windows (no dotTrace, dotMemory e dotCover): net8.0-windows e net7.0-windows
  • MAUI Mac (somente no dotTrace): net8.0-maccatalyst e net7.0-maccatalyst
  • Aplicativos para macOS (no dotTrace e dotMemory): net8.0-macos e net7.0-macos

Clique aqui para mais informações sobre a disponibilidade e as restrições do modo de criação de perfis.

O suporte para projetos em MAUI também está disponível dentro das versões stand-alone dessas ferramentas para .NET.

Suporte ao Frozen Object Heap dotUltimate

Agora o profiler do dotMemory stand-alone oferece suporte ao Frozen Object Heap (FOH), um recurso introduzido inicialmente com o .NET 6 SDK como parte das melhorias de desempenho na coleta de lixo.

O FOH aloca uma área dedicada da memória para objetos imutáveis. Esses objetos não são alterados depois de serem alocados e não estão sujeitos à coleta de lixo. O suporte a essa tecnologia permite que o dotMemory execute uma análise mais detalhada da memória usada pelos objetos imutáveis no FOH, melhorando a otimização do uso da memória.

Ferramentas de linha de comando

O formato-padrão agora é o SARIF

O formato-padrão agora é o SARIF

A partir da versão 2024.1, o formato-padrão de saída do InspectCode é o SARIF. O formato XML será tornado obsoleto em breve. Os resultados ainda estão disponíveis no formato XML na versão atual, quando usado o parâmetro -f="xml".

Diversos

Refatoração para retirar o ReSharper do processo do Visual Studio

Terminamos uma refatoração interna dos controles de texto. Além de ser parte do nosso esforço para fazer o ReSharper ser executado fora do processo do Visual Studio, essa refatoração foi projetada para melhorar a digitação e outros aspectos relacionados do desempenho do editor, tanto no ReSharper quanto no Rider. Você encontra aqui a última atualização de status do progresso da nossa tarefa de levar o ReSharper para fora do processo do Visual Studio.

Gerenciador de extensões

O feed do plug-in do JetBrains Marketplace adotou um novo mecanismo de filtragem, baseado em verificações de compatibilidade. Isso significa que plug-ins incompatíveis não são mais mostrados no gerenciador de extensões do ReSharper.

Baixar

Avaliação gratuita por 30 dias disponível