O ReSharper 2020.2 traz novas inspeções e correções rápidas para tipos de referência C#8 e nulos, o tão esperado "Code Cleanup on Save", um Executor de testes de unidade reformulado, além de melhorias de acessibilidade. Além disso, o ReSharper C++ leva você ao próximo nível de desenvolvimento em Unreal Engine e vem com muitas melhorias para suporte a C++/CLI, navegação e análise de código.
Avaliação gratuita por 30 dias disponível
A análise de código de nulidade agora reconhece mais casos e pode rastrear a nulidade incorreta através da desconstrução e do ciclo foreach
. Ele também fornece uma correção rápida correspondente.
A análise de código agora leva em conta os atributos JetBrains.Annotations (ambos NotNull
e CanBeNull
) para a API, mesmo no código em que tipos de referência anuláveis estão desabilitados (#nullable disable
).
Ações de contexto para converter foreach
em LINQ e LINQ em código também estarão disponíveis em IAsyncEnumerable<T>
se você tiver o pacote NuGet System.Linq.Async
instalado para seu projeto.
Agora, é possível gerar facilmente implementações IEqualityComparer<T>
e IComparer<T>
com as correções rápidas apropriadas.
A análise de código agora leva em consideração as anotações do compilador (como AllowNull
e DisallowNull
) ao verificar a nulidade de membros implementados ou substituídos.
Existem novas inspeções e correções rápidas para tornar variáveis e tipos de retorno "not nullable" caso elas nunca tenham retido ou retornado valores anuláveis.
A análise de código agora pode seguir as regras dotnet_diagnostic do arquivo .editorconfig. Especifique a gravidade das inspeções no arquivo .editorconfig, por exemplo, dotnet_diagnostic.CS1058.severity = hint
, e o ReSharper exibirá as inspeções adequadamente.
O suporte para o recurso de implementações padrão em interfaces foi aprimorado neste lançamento. A medianiz à esquerda no editor de código mostra que um método é implementado ou substituído, e nossas refatorações e navegação estão cientes desse recurso da linguagem C#.
As dicas de inserção agora estão disponíveis no código XAML. Fornecemos dicas para nomes de propriedades de marcação e DataContext
, bem como para margens e preenchimentos, o que é útil se você não deseja memorizar suas ordens.
A correção rápida Suppress nullable warning with ! pode ser desativada para uma solução por meio do menu Alt+Enter.
Agora, você pode configurar o ReSharper para iniciar a Limpeza de código automaticamente ao salvar um arquivo! Até que enfim!
Plug-ins de terceiros não são mais necessários para essa funcionalidade. Esse recurso pode ser habilitado na página de opções ReSharper | Options | Code Editing | Code Cleanup
.
Existem escopos novos e mais granulares para executar a Limpeza de código, como arquivos recentemente modificados e arquivos recentemente abertos, que podem reduzir significativamente o tempo necessário para obter um resultado, pois a Limpeza de código não precisa ser executada na solução inteira. Para um ajuste mais preciso, você pode especificar o que é qualificado como "recentemente".
Salve automaticamente os arquivos após a limpeza do código. Esse recurso pode ser habilitado na página de opções ReSharper | Options | Code Editing | Code Cleanup
.
Existem algumas melhorias para reduzir o tempo de execução da Limpeza de código:
Reformulamos nosso Executor de testes de unidade para que o .NET Framework e o .NET Core tenham o mesmo executor para ambos os tempos de execução que rodam fora do processo do Visual Studio. Ele nos ajuda a resolver vários problemas com a descoberta, execução e depuração de testes de unidade, além de fornecer controle total sobre hierarquias de teste de unidade para testes do .NET Core.
O novo executor de teste tem suporte integrado para:
O mais notável na interface do usuário é que agora o ReSharper oferece suporte ao atributo DisplayName
em testes do .NET Core para os frameworks xUnit e NUnit.
Aplicar filtros à árvore de testes de unidade, por exemplo, Passed/Failed/etc significa que os contadores fornecem dois números separados: o número total de todos os testes e o número de testes que atendem aos critérios de filtro.
Existem duas novas ações no menu Navigate To:
Introduzimos suporte ao método Assert.Multiple
do NUnit, que possibilita verificar várias asserções sem que o código saia após a primeira falha.
Os intervalos de tempo para agrupar por duração podem ser editados diretamente nas opções.
Essa versão acompanha suporte aprimorado para leitores de tela como o JAWS, o NVDA e o Microsoft Narrator. Esses leitores de tela agora têm melhor acesso a:
Temos boas notícias para desenvolvedores UWP – o suporte para associações compiladas com x:Bind
está finalmente aqui!
O ReSharper resolve o código x:Bind
corretamente e oferece várias inspeções e correções rápidas correspondentes. Ele avisa sobre a falta de setters de propriedades, atributos BindBack
e quando há colisões de sobrecarga. Além disso, há um conjunto de correções rápidas Create from Usage para gerar um campo, propriedade ou método adequado dentro do C# code-behind.
Há complementação de código e informações de parâmetros para os atributos propertyPath
, BindBack
e UpdateSourceTrigger
dentro de uma expressão x:Bind.
As refatorações Change Signature e Safe Delete agora reconhecem o uso do método no código XAML e o atualizam de acordo. Além disso, as refatorações Make Static/Const e Encapsulate Field funcionam diretamente do código XAML e atualizarão os usos XAML corretamente se você as chamar do C# code-behind.
O reconhecimento de nulidade é integrado à análise de código x:Bind
. O ReSharper agora mostra inspeções relacionadas a nulos diretamente no código XAML quando há atributos CanBeNull
e NotNull
no código C#, por exemplo, “Possible System.NullReferenceException
” e “Possible null
assignment to non-nullable entity” para argumentos em um método usado em um propertyPath
.
Outros recursos do ReSharper, como Find Usages e Go to Declaration, também estão cientes de associações x:Bind
.
Em 2020.1, o Rider migrou do Mono para o .NET Core no macOS e Linux. Nesta versão, as Ferramentas de linha de comando ReSharper são executadas no .NET Core no Windows, Linux e macOS.
Observe que as Ferramentas de linha de comando do ReSharper não incluem mais o Mono, e as ferramentas para macOS e Linux agora exigem o .NET Core 3.1.
Outra vantagem de usar o .NET Core como runtime em vez do Mono é que as Ferramentas de linha de comando do ReSharper podem ser instaladas como uma ferramenta global do .NET Core. Execute o seguinte comando para instalá-las:
dotnet tool install -g JetBrains.ReSharper.GlobalTools --version 2020.2.0-*
E execute a ferramenta com jb tool_name [options]
, por exemplo:
jb inspectcode yourSolution.sln -o=<pathToOutputFile>
Nesse lançamento, o motor yFiles usado para desenhar o gráfico foi atualizado para a versão mais recente. Essa nova versão do yFiles, além de nossas otimizações, melhora significativamente o desempenho do desenho do gráfico resultante.
Agora, é possível exportar o gráfico resultante para novos formatos:
A janela de ferramentas de diagramas finalmente é compatível com o tema escuro do Visual Studio.
Agora é muito mais fácil navegar para usos de tipos de assemblies externos no código. O ReSharper pode navegar diretamente dos resultados de pesquisa de Go to Type até Find Usages. Para experimentar, procure um tipo, realce-o na lista com o teclado ou o mouse e chame Find Usages ou Go to Usage usando os respectivos atalhos.
A partir do lançamento v2020.2, várias ações do ReSharper podem ser chamadas, como chamar a documentação rápida diretamente das caixas de diálogo Go to Symbol e Go to File Member e usar atalhos mapeados para essas ações em seu esquema de mapa de teclas favorito.
Um conjunto de novas ações Peek foi adicionado para mostrar o resultado de algumas ações comuns do ReSharper em uma visualização Peek Definition.
Chame a ação Peek Implementation para abrir uma exibição Peek da implementação clicando na roda do mouse enquanto mantém pressionadas as teclas Ctrl+Alt ou ao pressionar Ctrl+Alt+Q com o sinal de intercalação em um símbolo.
Chame a ação Peek Base Symbols para observar todos os símbolos base dentro de uma exibição Peek. Basta pressionar Shift+Alt+Q em um símbolo para executá-lo.
Neste lançamento, a caixa de diálogo Conflicts foi reprojetada como uma etapa separada na interface Refactorings. A lista simples de antes foi substituída por uma árvore agrupada por arquivo.
Ao chamar refatorações Introduce parameter ou Introduce field em uma expressão, o ReSharper pergunta em qual parte da expressão a refatoração deve ser aplicada.
O ReSharper C++ 2020.2 apresenta suporte para o modelo de projeto Unreal Engine, trazendo sugestões mais inteligentes de importação automática para diretivas include
e suporte para diferentes configurações de soluções. O ReSharper C++ também segue mais de perto as diretrizes do Unreal Engine, ajustando as ações de gravidade da inspeção e geração de código.
Para facilitar a navegação, o Search Everywhere/Go To agora trata símbolos de fontes de motor como símbolos de biblioteca. Existem também várias novas inspeções que aplicam as diretrizes do Unreal Engine e lembram que você deve atualizar os arquivos do projeto no Unreal Editor.
Como a licença do ReSharper agora abrange os produtos ReSharper e ReSharper C++, o suporte para C++/CLI - uma ponte entre as linguagens - está recebendo muitas atualizações e uma melhor interoperação entre C++/CLI e C#.
O ReSharper C++ encontrará símbolos derivados no código C#, enquanto Go to Base Symbols e Go to Derived Symbols agora funcionam em entidades CLR importadas.
O ReSharper C++ agora inspeciona a maneira como você aloca memória e sugere uma solução rápida para substituir gcnew
por new
(e vice-versa) quando o tipo de destino não é válido. Outra inspeção avisa quando você tenta usar o especificador C++ final
em uma classe ou interface gerenciada, com uma correção rápida para torná-lo sealed
em vez disso. Além disso, agora você pode usar uma correção rápida para converter uma cast no estilo C em safe_cast
.
Agora, o ReSharper agora alinha corretamente as colunas de código semelhante, mesmo quando apenas parte do grupo alinhado está sendo formatado. Portanto, adicionar um ponto-e-vírgula ou uma chave não interrompe mais o alinhamento.
Existem algumas melhorias no executor de console do dotCover:
--reportype=SummaryXml
permite criar um novo tipo de relatório de Summary, que inclui dados sobre quantas classes, métodos e instruções são cobertos no total. --reporttype=HTML,SummaryXml
--output=report.html;summary.xml
O dotTrace autônomo e o dotTrace no Rider são capazes de criar um perfil da parte nativa de aplicativos Mono/Unity no Windows. Basta iniciar uma sessão com a opção 'Enable native profiling', e você verá pilhas de chamadas nativas e gerenciadas em snapshots de desempenho. Esse recurso pode ser benéfico para analisar gargalos de desempenho em jogos Unity.
Existem algumas melhorias no profiler de console do dotTrace:
Agora, você pode abrir objetos afixados como um conjunto de objetos separado e pode abrir objetos que não são acessíveis a partir das raízes de GC como um conjunto de objetos separado.
As melhorias no profiler de linha de comando do dotMemory incluem:
O dotPeek continua aprimorando seu suporte para as versões mais recentes do C#, e o novo lançamento traz o seguinte:
Throw
.NullablePublicOnly
.Avaliação gratuita por 30 dias disponível