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.
Avaliação gratuita por 30 dias disponível
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:
Contains(item)
antes de adicionar o item a HashSet
ou outra coleção que implemente a interface ISet
. ContainsKey(key)
antes de adicionar o item a Dictionary
ou outra coleção que implemente a interface IDictionary
. TryAdd(key, value)
em coleções Dictionary
ou em outras herdadas destas, quando possível. TryGetValue(key, out value)
em coleções IDictionary
, quando possível. 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.
O .NET 6.0 SDK introduziu uma nova API para a verificação de null
— ArgumentNullException.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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
.
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.
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.
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.
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".
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.
Avaliação gratuita por 30 dias disponível