Novidades no ReSharper 2023.1

O ReSharper 2023.1 melhorou o suporte a C#, incluindo um conjunto de inspeções para otimizar e acelerar o seu trabalho com diferentes tipos de coleções e maneiras mais ajustáveis de incluir verificações de null no seu código. Esta versão também traz atualizações nos módulos do C++ 20, o primeiro lote de recursos do C++ com suporte, a pré-visualização de substituições de macros e Call Tracking para o C++. Também foram incluídos aperfeiçoamentos da experiência do usuário nos testes unitários e na limpeza do código.

Baixar

Avaliação gratuita por 30 dias disponível

Suporte para C#

Redução do número de consultas em coleções

Introduzimos um conjunto de inspeções, com correções rápidas correspondentes, para otimizar e acelerar o seu trabalho com diferentes tipos de coleções reduzindo o número de consultas em coleções:

  • Para remover uma verificação Contains(item) antes de adicionar o item a HashSet ou outra coleção que implemente a interface ISet.
  • Para remover uma verificação ContainsKey(key) antes de adicionar o item a Dictionary ou outra coleção que implemente a interface IDictionary.
  • Inspeção para usar TryAdd(key, value) em coleções Dictionary ou em outras herdadas destas, quando possível.
  • Inspeção para usar TryGetValue(key, out value) em coleções IDictionary, quando possível.

Estilo de sintaxe para padrões de verificação de null

Implementamos a nova configuração Syntax style, para ajudar você a seguir um estilo consistente de verificações not null dentro de padrões. Essa configuração consiste de duas opções: sintaxe de padrão recursivo vazio { } e padrão negado not null. Esta última é a opção predefinida. Você pode ajustar esse comportamento a qualquer momento na página ReSharper | Options | Code Editing | C# | Syntax Style.

Usar o padrão not null tem uma desvantagem: ele não permite que nomes de variáveis sejam introduzidos para o valor verificado, enquanto o padrão recursivo { LastName: { } lastName } permite isso. Adicionamos a ação de contexto Add pattern variable, atuando no padrão not null, para procurar expressões que acessem o mesmo valor (já que estamos introduzindo um nome de variável) e substituir todas elas pelo nome recém-introduzido, para consolidar todos os acessos ao mesmo valor.

Estilo de verificação de null ArgumentNullException.ThrowIfNull

O .NET 6.0 SDK introduziu uma nova API para a verificação de nullArgumentNullException.ThrowIfNull. Nosso mecanismo de análise de código já reconhece essa abordagem de verificação desde aquela época, mas não havia uma opção para usar esta API como o estilo default das verificações de null produzidas pelo ReSharper. Na versão 2023.1, adicionamos um padrão ArgumentNullException.ThrowIfNull ao menu ReSharper | Options | Code Editing | C# | Null checking.

Extração de padrões comuns de propriedades

Se você usar muito a correspondência de padrões de propriedades, experimente nossa nova inspeção com uma correção rápida para extrair elementos comuns de diversos padrões de propriedades, quando eles ocorrerem juntos no fluxo do código. O código gerado pela correção rápida Extract common property pattern ajuda você a reduzir as repetições de código, ao mover padrões comuns de propriedades para um padrão de mais alto nível.

Remoção de regiões vazias

Desenvolvedores em C# costumam usar a diretiva #region e o desdobramento de código no IDE para estruturar seu código. A refatoração pode deixar vazias alguns trechos do código identificados com #region, e isso pode deixar o código confuso quando estiver contraído. Com esta nova inspeção de código, você poderá identificar trechos vazios identificados com #region, mesmo no estado contraído, e poderá limpar o código com uma correção rápida correspondente.

Substituição de span.SequenceEqual(“str”)

A análise de código agora tem uma inspeção que sugerirá substituir span.SequenceEqual("stringLiteral") por span is "stringLiteral" — uma solução mais limpa e conveniente na sintaxe do C# do que chamar uma função.

Inserção de uma especificação de tipo de retorno em lambdas

Expressões lambda em C# podem ter parâmetros com tipos implícitos e retornos com tipos inferidos. Porém, pode-se adicionar tipos explícitos para tornar o código mais claro em situações de resolução de sobrecargas complexas. A partir do C# 11, também é possível especificar o tipo do retorno em expressões lambda. Para isso, estamos introduzindo a ação de contexto Insert return type specification no ReSharper 2023.1. Para tanto, essa ação pode ser aplicada a todos os escopos, incluindo métodos, classes, arquivos, projetos e até à solução inteira.

Inspeção Pattern is redundant

Os padrões or/and/not do C# são úteis para verificações compactas de valores, mas podem ser menos reconhecíveis que expressões tradicionais, como ||/&&/!. Eles também podem criar bugs difíceis de encontrar, se forem omitidos parênteses. Para ajudar nisso, na versão 2023.1 introduzimos uma nova análise de código que alerta para verificações "mortas" dentro de padrões complexos.

Ação de contexto Convert to list pattern

Continuamos a aperfeiçoar nosso suporte aos padrões de listas do C# 11. Com a nova ação de contexto Convert to list pattern, você pode converter verificações do comprimento de coleções em uma sintaxe de padrão de lista. Isso funciona em qualquer contexto onde possa ser feita uma verificação do comprimento de uma coleção.

Suporte para C++

Pré-visualização de substituições de macros

Pré-visualização de substituições de macros

Ao passar o mouse sobre uma macro, agora você pode ver a pré-visualização da sua expansão na dica de ferramenta, com realce completo da sintaxe e formatação adequada do código. Você ainda pode usar a ação de contexto Substitute macro call para expandir a macro diretamente no editor, mas a pré-visualização instantânea facilita trabalhar com macros. Além disso, o pop-up Quick Documentation(Ctrl+Shift+F1) agora permite que você clique em qualquer entidade da pré-visualização da substituição e veja sua documentação.

Rastreamento de chamadas

Rastreamento de chamadas

O Call tracking finalmente chegou ao ReSharper C++! Agora você pode visualizar cadeias de chamadas e navegar por elas na hierarquia das chamadas de entrada. Na janela de resultado do rastreamento de chamadas, você pode dar um duplo clique em um item da hierarquia para navegar até a chamada correspondente no editor ou para expandir qualquer nó e conferir suas chamadas de entrada.

Novidades no ReSharper C++ 2023.1

Alterações na experiência e na interface de usuário

Diálogo de atualização

O ReSharper 2023.1 traz um diálogo de atualização reprojetado, contendo notas sobre as alterações feitas na última versão disponível, para que você possa tomar uma decisão mais embasada sobre baixar ou pular aquela atualização.

Novo diálogo de atalho

A partir da versão 2023.1, quando você iniciar o ReSharper pela primeira vez, aparecerá uma tela de Atalhos de Teclado, onde você poderá escolher o esquema de atalhos que deseja usar.

Limpeza de código

No ReSharper 2023.1, estamos introduzindo o novo tipo de tarefa Reformat inactive preprocessor branches in file. Essa tarefa permite que você reformate branches inativos de pré-processadores. Ela só pode ser aplicada ao arquivo inteiro de uma vez e só funciona com código-fonte em C#.

Esta tarefa não pode reformatar código oculto atrás de uma diretiva de pré-processador #if que seja sempre falsa. Os dois exemplos mais óbvios desta limitação são os construtos #if false ... #endif e #define A #if !A ... #endif.

Testes unitários

Filtros de pesquisa de texto aplicados a árvores de testes unitários, tanto dentro da janela de ferramentas Session quanto da Explorer, agora são levados em consideração ao executar testes através dos botões "Run" da barra de ferramentas. Só continuarão listados e serão executados os nós que satisfizerem os critérios da pesquisa.

Refatoração Rename

Melhoramos a maneira pela qual o ReSharper lida com a renomeação de arquivos em um projeto. A partir desta versão, sempre que você renomear um arquivo dentro da sua solução, aparecerá um diálogo com a opção de também renomear todos os símbolos relevantes (classes, interfaces, etc.) para coincidirem com a alteração.

dotTrace no macOS e no Linux Beta dotUltimate

Agora a versão stand-alone do dotTrace também está disponível no Linux e no macOS e você já pode realizar todo o workflow de profiling nesses sistemas operacionais, incluindo a coleta e análise de snapshots de desempenho.

Migração de plug-ins

Agora os plug-ins do ReSharper serão migrados automaticamente de uma versão para a seguinte, contanto que as APIs que eles referenciam continuem válidas e inalteradas.

Um verificador embutido de APIs analisará a compatibilidade binária dos plug-ins instalados e fará a migração dos que forem viáveis. Os autores de plug-ins também receberão notificações automáticas, através do JetBrains Marketplace, sempre que as APIs usadas pelos seus plug-ins não estiverem mais presentes no SDK.

Diversos

Suporte a CSS desativado como padrão

A demanda por CSS no ReSharper é pequena e achamos cada vez mais difícil dar prioridade a acompanhar as últimas versões da linguagem. Por isso, decidimos suspender o suporte a CSS até encontrarmos uma maneira melhor de darmos suporte a essa linguagem.

A partir do ReSharper 2023.1, o suporte a CSS estará desativado como padrão. Se você ainda quiser usar essa linguagem, poderá reativar o suporte aqui: ReSharper | Options | Environment | Products & Features | caixa de opção "CSS".

Fim do Desenvolvimento para o Visual Studio 2010 e 2012

No momento, o ReSharper e o .NET Tools dão suporte a 7 versões principais do Visual Studio, desde a 2010 até a mais recente, 2022. A partir das versões 2023.1, estamos reduzindo essa lista, eliminando o suporte às duas versões mais antigas, o Visual Studio 2010 e o 2012.

Saiba mais aqui

Baixar

Avaliação gratuita por 30 dias disponível