Novidades no ReSharper 2021.2

O ReSharper 2021.2 oferece novas inspeções com correções rápidas para análise de código C# e suporte para tipos de referências anuláveis. Além disso, muitos dos recursos disponíveis para arquivos de código escrito manualmente estão agora disponíveis para arquivos de código fonte gerados automaticamente. O ReSharper 2021.2 também oferece suporte para aplicações de arquivo único no Assembly Explorer, tratamento de issues aprimorado no Dynamic Program Analysis e regras de nomenclatura avançadas para registros, métodos de extensão e variáveis de captura.

Baixar

Avaliação gratuita por 30 dias disponível

Análise de código C#

Você usa variáveis temporárias para trocar valores de variáveis? Agora, existe uma maneira mais elegante de fazer isso! O ReSharper 2021.2 ajudará você a modernizar seu código com a nova correção rápida Swap via deconstruction.

Reduza o número de alocações no seu código e aumente o rendimento. Substitua a criação de arrays vazios por Array.Empty<T>.

Se você estiver alocando um novo Type[0], o ReSharper sugerirá o uso de Type.EmptyTypes para tornar o uso da memória mais eficiente.

Se EventArgs específicos não forem necessários, o ReSharper informará que você pode substituir new EventArgs() por EventArgs.Empty.

Outras melhorias:

  • Use a propriedade generated_code de .editorconfig para marcar arquivos ou pastas como código gerado e excluí-los do processamento.
  • As análises de código agora são mais rápidas para membros com muitas funções e encerramentos locais.
  • Aproveite as melhorias de desempenho em Find similar issues e nas análises de código para instruções switch e expressões switch grandes e complexas.

Tipos de Referência Anuláveis (NRT)

Você tem muitas supressões de aviso anuláveis na sua base de código depois de habilitar tipos de referência anuláveis?

O ReSharper indica supressões (!) que não são mais necessárias e que podem ser removidas com segurança.

Uma nova ação de contexto permite pesquisar todas as supressões de aviso anuláveis no escopo. Na janela de ferramentas Find Results, você pode reavaliar se as supressões são necessárias ou não.

Introduzimos uma nova refatoração para alterar a nulabilidade. Ela está disponível por uma correção rápida, pela ação Refactor This ou por uma refatoração no local ao adicionar ou remover a anotação anulável (? ).

O ReSharper atualizará anotações de nulabilidade e sugerirá a propagação das alterações em toda a sua base de código.

Diversas novas inspeções com correções rápidas correspondentes estão disponíveis para quando você estiver usando atributos JetBrains.Annotations e os tipos de referência anuláveis estiverem habilitados.

Atualize os atributos JetBrains.Annotations para a sintaxe NRT e atributos compatíveis com o compiler. Por exemplo, o ReSharper pode atualizar [CanBeNull] string para string?.

O ReSharper informará sobre atributos JetBrains.Annotations redundantes, como [NotNull] string ou [ItemCanBeNull] List<string?>. E, é claro, ele oferecerá uma solução rápida para atualizar seu código.

Quando a sintaxe de tipo de anotação não for permitida, uma nova inspeção com uma correção rápida adicionará anotações compatíveis com o compiler, por exemplo:

  • [JetBrains.Annotations.NotNull] T param a [DisallowNull] T param (where T: class?)
  • [JetBrains.Annotations.CanBeNull] T a [System.Diagnostics.MaybeNull] T (no C# 8, onde a sintaxe T? não é permitida)

O ReSharper adiciona novas inspeções e correções rápidas para ajudar você a usar quatro anotações compatíveis com o compiler, como [DisallowNull], [AllowNull], [MaybeNull] e [NotNull].

Uma nova inspeção detecta anotações redundantes do compiler, como quando [AllowNull] é aplicado a um tipo anulável e uma correção rápida as remove.

Quando a sintaxe de tipo de referência anulável puder ser usada, ReSharper sugerirá o uso.

Existem melhorias adicionais que também merecem ser mencionadas:

  • O ReSharper verifica se as variáveis precisam ser anuláveis e produz tipos mais rigorosos quando possível.
  • Muitas ações de contexto, correções rápidas e templates postfix foram atualizados para funcionar melhor com a supressões de aviso anuláveis. Elas preservam as supressões de aviso anuláveis ou as produzem para o código introduzido quando o código original suprimiu o aviso.
  • Melhoramos o suporte para o uso de elementos genéricos com tipos de referência anuláveis.

Suporte a geradores de código fonte

Geradores de código fonte podem ser usados para reduzir o trabalho de desenvolvimento entediante e repetitivo e para gerar código em tempo de compilação. No ReSharper 2021.2, muitos dos recursos disponíveis para arquivos de código escrito manualmente também estão disponíveis para arquivos de código fonte gerados automaticamente. Melhoramos o suporte ao editor, aprimoramos o depurador e adicionamos suporte para SWEA (Solution-Wide Error Analysis) e refatorações.

Para o código gerado, avisos e erros são exibidos no editor e na barra de marcadores.

O SWEA (Solution-Wide Error Analysis) agora inclui arquivos gerados por geradores de código fonte. Se houver um erro em um arquivo gerado no seu projeto, você poderá identificá-lo imediatamente e navegar até ele.

É possível alternar esse comportamento usando a nova opção para incluir arquivos gerados na origem, que está habilitada por padrão e localizada em ReSharper | Options | Code Inspection | Settings | Enable solution-wide analysis.

Agora, as refatorações podem ser acionadas a partir de arquivos gerados na origem. Use a refatoração Rename para renomear uma propriedade gerada. O ReSharper também renomeará o símbolo relacionado em um código escrito manualmente.

Da mesma forma, Change Signature permite que você verifique se o código que será gerado após a alteração ainda pode ser compilado.

Agora, você pode usar Find Usages, procurar herdeiros, navegar do código gerado ao código escrito manualmente com Ctrl+Click e Navigate To e muito mais.

O realce semântico está habilitado e, portanto, membros de classes como eventos, campos e propriedades são realçados corretamente. Todas as dicas de inserção são mostradas quando apropriado.

As próprias dicas de dados do ReSharper são mostradas durante a depuração. Isso fornece assistência de depuração mais poderosa com a capacidade de pesquisa, realce de propriedades e muito mais.

Agora, o ReSharper oferece suporte ao código gerado por geradores de código fonte no VB.NET.

Suporte para o URI HttpClient

No lançamento anterior, implementamos suporte para modelos de rota do ASP.NET. No lançamento v2021.2, continuamos nessa direção e melhoramos o suporte para strings de URI HttpClient:

  • Ao usar HttpClient, a complementação de código sugerirá todos os URIs que podem ser resolvidos para ações em controladores anotados com os atributos [Route], [Http{Method}] ou [AcceptVerbs].
  • Você pode navegar facilmente entre os atributos de rota dentro de controladores e esses URIs usando Go to Declaration e Find Usages
  • Renomear uma rota de atributo em um controlador afeta seus usos em URIs, e você pode até mesmo renomear uma rota diretamente da string de URI.

Navegação

Recursos úteis foram adicionados para navegação:

  • Durante a depuração, o ReSharper entende ainda mais o seu código. Como resultado, chamar Go To Declaration (ou Ctrl+Clique) nas referências de interface levará você diretamente para suas implementações.
  • A lista Go To Base/Inheritors agora também mostra substituições ocultas.

Estilo e formatação do código

Às vezes, pode ser útil especificar regras de nomenclatura avançadas para registros, métodos de extensão e variáveis de captura. A partir deste lançamento, é possível configurar essas regras.

Se você prefere usar um estilo de chaves Pico (recuo), nós temos o que você precisa. O estilo Pico foi adicionado como uma opção à guia Brace Layout, em ReSharper | Options | Code Editing | C# | Formatting Style | Braces Layout.

Alteramos as preferências de formatação padrão em alguns casos para alinhá-las aos padrões do Visual Studio.

Refatoração de função inline C++

Com a nova refatoração Inline Function, você pode substituir rapidamente uma chamada de função pelo corpo da função. O ReSharper C++ realizará as transformações necessárias, lidará com todos os conflitos de nome e reformatará o código resultante.

Dicas de conversão de tipos C++

O ReSharper C++ 2021.2 introduz dicas de inserção para conversões de tipo implícitas, que podem resultar na perda inadvertida de dados ou em problemas de desempenho. Agora, o ReSharper C++ indica onde as conversões implícitas acontecem no seu código.

Novidades no ReSharper C++ 2021.2

DPA (Dynamic Program Analysis)

Tratamento de issues aprimorado

O DPA agora armazena dois valores para cada issue: o valor máximo e o valor atual. Isso evita falsos negativos, pois era possível que os issues caíssem abaixo do limite e desaparecessem da lista de issues, não porque foram corrigidos, mas sim porque suas condições de inicialização mudaram (o programa foi executado por menos tempo, a funcionalidade necessária não foi executada e assim por diante.)

Outras atualizações

  • O DPA é desabilitado automaticamente quando você inicia a criação de perfil de desempenho.
  • A janela Dynamic Program Analysis agora oferece suporte à seleção de vários issues.
  • Agora, a supressão de issues com o atributo SuppressMessage funciona para métodos assíncronos.

Assembly Explorer

The embedded decompiler can now decompile single-file apps. Ele oferece suporte a formatos de arquivo único para o .NET Core 3.1, .NET 5 e os próximos SDKs .NET 6. Usando o Assembly Explorer, é possível navegar por assemblies inclusos dentro de um aplicativo de arquivo único, como você já está acostumado.

Melhor desempenho de cobertura dotUltimate

Melhor desempenho de cobertura
  • Agora, o dotCover pode executar análises de cobertura de classes de teste em paralelo dentro de um único assembly. Em certos cenários, isso pode resultar em uma análise de cobertura mais rápida.
  • Agora, executores de testes de unidade podem ser pré-carregados para projetos .NET Core e .NET (isso permite que a análise de cobertura comece mais rápido, pois os executores de testes de unidade já estão carregados na memória).

Novidades do dotCover 2021.2

Análise de Alocação de Memória dotUltimate

Neste lançamento, continuamos a melhorar a maneira como você analisa a alocação da memória. Duas novas guias foram adicionadas à exibição Memory Allocation:

  • A guia Methods permite que você analise uma lista simples de métodos que têm memória alocada.
  • A guia Call Tree permite que você analise a árvore de chamadas de alocação. Cada nó na árvore mostra não só o método chamado, como também os objetos alocados pela chamada.

Novidades do dotMemory 2021.2

Criação de perfil nativa dotUltimate

Agora, é possível criar perfis de aplicações nativas no Windows. Ao iniciar uma sessão de criação de perfil, você tem a opção de baixar arquivos de símbolos de fontes nativos de servidores remotos. A criação de perfil nativa está disponível apenas para o tipo de criação de perfil Timeline.

Outros

Razor

Os desenvolvedores Razor que trabalham em visualizações grandes poderão desativar a assistência e as sugestões automáticas, que exigem alto consumo de CPU, se o editor começar a ficar lento. Você pode encontrar as configurações aqui: ReSharper | Options | Environment | Editor | Behavior | Razor | Allow CPU-intensive typing assist.

ReSharper Command Line Tools

Introduzimos uma alteração inovadora na ferramenta InspectCode. A partir da v2021.2, o InspectCode restaura pacotes NuGet automaticamente e cria uma solução antes de iniciar sua análise. Se esse comportamento for indesejado, use a opção --no-build para desabilitar a restauração de pacotes NuGet e a construção da solução.

Baixar

Avaliação gratuita por 30 dias disponível