Novidades no Rider

O Rider 2020.1 agora executa o back-end no tempo de execução do .NET Core por padrão no macOS e Linux e oferece os recursos Xamarin Hot Reload e Dynamic Program Analysis. Ele apresenta uma maneira fácil de configurar a gravidade do editor e adiciona análise de fluxo de dados para valores inteiros, além de um preenchimento de código mais rápido. A janela Debug foi reformulada, e a refatoração de extração de classe e os filtros de cobertura agora estão disponíveis.

O back-end é executado no tempo de execução do .NET Core no macOS e Linux

O back-end é executado no tempo de execução do .NET Core

Diga Olá para a edição .NET Core do Rider! Finalmente, o back-end é executado no tempo de execução .NET Core por padrão no macOS e Linux, em vez de no tempo de execução Mono. Você notará instantaneamente:

  • Melhor desempenho.
  • Área de ocupação de memória menor.
  • Agora, a restauração do NuGet tem multithreading (e não singlethreading como no Mono). Isso significa que ela será 4x mais rápida se você tiver uma CPU com 4 núcleos lógicos, 8x mais rápida se você tiver uma CPU com 8 núcleos lógicos…e assim por diante, você entendeu.
  • E a superação de várias outras limitações do Mono.

A propósito, a versão atual do .NET Core é a melhor e mais recente 3.1, apresentando várias melhorias de desempenho em comparação com a versão 3.0

Observe que, por enquanto, não há suporte para Windows, apenas macOS e Linux. Planejamos adicionar suporte para Windows ainda este ano.

Quer saber mais sobre a transição do Mono para o .NET Core e ver os gráficos de desempenho? Confira este post de blog

Se você tiver algum problema com o back-end do Rider em execução no .NET Core e quiser voltar ao tempo de execução Mono, selecione Help | Switch IDE runtime to Mono. E, se algo der errado para você, não se esqueça de nos dizer.

Xamarin Hot Reload

Xamarin Hot Reload

O suporte inicial para o recurso Xamarin Hot Reload está aqui! Agora, o Rider aplica automaticamente as alterações feitas no XAML do Xamarin Forms ao aplicativo em depuração em um dispositivo ou simulador, sem reconstruir e reimplementar o aplicativo inteiro.

Observe que há uma limitação: se um PC/laptop com o Rider e um dispositivo iOS não estiverem na mesma rede Wi-Fi, um Hot Reload não funcionará, mesmo que o dispositivo iOS esteja conectado ao PC/laptop via USB.

Além disso, o suporte ao Xamarin recebe uma correção importante: o erro “Invalid target architecture 'arm64e'” não aparece mais ao executar projetos Xamarin.iOS em um dispositivo iPhone XS Max.

Confira o post de blog para conhecer mais atualizações.

DPA (Dynamic Program Analysis)

Dynamic Program Analysis (DPA) Apenas Windows

Temos o prazer de apresentar o recurso Dynamic Program Analysis. Todas as vezes que você executa seu projeto no Rider, a DPA começa a coletar dados de alocação de memória. Depois que você fechar o aplicativo, a DPA mostrará uma lista dos problemas detectados: fechamentos e alocações para heaps de objetos grandes e pequenos. O melhor de tudo é que você não precisa iniciar nenhuma “sessão de criação de perfil” e tirar snapshots. Basta trabalhar como de costume, e todos os dados serão coletados em segundo plano, com quase zero de sobrecarga. Testar a DPA em várias soluções reais demonstrou uma desaceleração de apenas 0 a 2%.

Observação: a DPA está disponível apenas no Windows, e você não precisa de uma licença separada para ativá-la.

Saiba mais: Detecte problemas de memória automaticamente no seu aplicativo com a Dynamic Program Analysis

Análise de fluxo de dados de valores inteiros

Análise de fluxo de dados de valores inteiros

Esta versão do Rider introduz um novo tipo de análise de código para rastrear o uso de valores inteiros no seu aplicativo. Esse novo tipo de análise rastreia como os valores de todas as variáveis locais int variam e verifica a correção de todas as operações comuns nessas variáveis para detectar partes de código inúteis ou possivelmente incorretas. Ou seja, ele avisa sobre:

  • Operadores relacionais/de igualdade sempre fornecendo resultados true ou false.
  • Casos de switch heuristicamente inacessíveis, verificando valores int.
  • Operações aritméticas sem sentido, como multiplicação por 1, adição de 0 etc.
  • Possíveis estouros de int.
  • Divisão possível por 0.

Para melhorar a precisão da análise, também adicionamos dois novos atributos JetBrains.Annotations para uso com membros de tipo e parâmetros do tipo int: [NonNegativeValue] e [ValueRange(from, to)]. Esses atributos especificam como os valores dos membros int específicos podem variar em tempo de execução.

Suporte para Unity

Suporte para Unity

  • Fizemos melhorias significativas no uso da memória e na velocidade da indexação de ativos. Agora, o Rider indexa todo o seu código antes de examinar seus ativos, o que significa que todos os recursos de produtividade, como preenchimento de código, realce e inspeções, estão disponíveis para uso mais rápido do que antes. A indexação de ativos continuará após o carregamento da solução, enquanto você continua trabalhando, e o Rider encontrará usos e até mesmo renomeará ativos internos assim que a indexação for concluída. Obviamente, uma vez feito, o índice permanece incrementalmente atualizado, examinando apenas os arquivos recém-alterados.
  • A indexação de ativos agora também está mais inteligente. Ela entende o uso do seu código nos prefabs Nested e Variant e mostra usos para ScriptableObjects e os valores de campos serializados.
  • A descoberta de testes de unidade agora funciona melhor com projetos do Unity, com o Rider encontrando todos os testes dos modos Edit e Play no seu projeto automaticamente.
  • Adicionamos uma nova inspeção de desempenho, “Prefer jagged arrays to multidimensional arrays”, que demonstra melhor desempenho em caminhos quentes. Como se trara de uma micro-otimização, ela é sugerida apenas em contextos críticos de desempenho, como o método Update ou qualquer coisa chamada a partir de Update.
  • O Rider não sugerirá mais Boo.Lang.List ou System.Diagnostics.Debug em seu preenchimento de código para projetos do Unity.
  • Ajustamos a ordem das funções de eventos na caixa de diálogo Generate para colocar os métodos mais importantes em primeiro lugar. E, ao gerar funções no menu Alt+Enter, elas também serão geradas no local correto.
  • Para obter mais atualizações e correções, consulte o repositório do GitHub.
Suporte para C#

Suporte para C#

Continuamos adicionando cada vez mais suporte aos recursos da linguagem C# 8. Refatoramos bastante o suporte à linguagem C# para preparar a análise de código e outros recursos, como refatorações e ReSharper Build, para oferecer suporte a Tipos de referência anuláveis (NRT). No Rider 2020.1, a análise de código relata avisos de compilação relacionados a tipos de referência anuláveis e fornece correções rápidas para a maioria deles.

Existem também várias novas inspeções e soluções rápidas:

  • Para detectar restrições de parâmetros de tipos redundantes em relação a tipos de referência anuláveis.
  • Para detectar e usar sobrecargas async de métodos, quando disponíveis, em vez de sobrecargas sync.
  • Para usar a expressão nameof em vez de usar a construção typeof(SomeType).Name para obter o nome do tipo atual.
Complementação de código

Complementação de código

No ano passado, recebemos alguns relatórios sobre o pop-up de preenchimento de código demorar muito para aparecer. Fizemos nossa lição de casa e, agora, o pop-up de preenchimento de código é exibido muito mais rápido depois que você começa a digitar, especialmente em soluções grandes.

Outro recurso muito útil que chegou nesta versão é que os membros marcados como Obsolete podem ser ocultados no preenchimento de código quando você não deseja vê-los lá.

Por último, mas não menos importante, o preenchimento de um item no pop-up de preenchimento de código agora respeita suas configurações de estilo de código.

Janela de depuração retrabalhada

Janela de depuração retrabalhada

Reformulamos completamente a interface do usuário para a janela de ferramentas Debug, para torná-la a mais limpa e organizada possível. Quando há apenas uma sessão de depuração em execução, o layout das guias é simplificado, pois todas elas estão agora em um único nível. As legendas das guias ocupam menos espaço e, portanto, há mais espaço para o conteúdo do depurador. E, quando há várias sessões, mais uma camada de guias é adicionada para separar essas sessões.

Ao mesmo tempo, combinamos as exibições Threads e Frames. Se você não precisa da exibição Threads no momento, pode ocultá-la clicando no ícone “Hide threads view”.

Atualizações no mecanismo do Depurador

Atualizações no mecanismo do Depurador

Também atualizamos o mecanismo do depurador para tornar sua experiência de depuração ainda melhor:

  • Agora, você pode desanexar de um processo iniciado inicialmente no depurador sem encerrar o aplicativo.
  • Smart Step Into está ativado por padrão para a ação Step Into (Preferences/Settings | Build, Execution, Deployment | Debugger | Stepping | .NET Languages | Always do Smart Step Into).
  • O depurador oferece suporte ao tempo de execução .NET Core x86.
  • O nome do thread agora é exibido na linha de execução para ajudá-lo a entender onde a execução do aplicativo está no momento.
  • Você pode usar as funções Skip to Here/Cursor depois de interromper a sessão de depuração em uma exceção.
  • Agora, você tem mais controle da janela Debug Output e pode desabilitar mensagens de serviço na saída da depuração.
Maneira fácil de configurar a gravidade do editor

Maneira fácil de configurar a gravidade do editor

Esse novo recurso permite alterar facilmente os níveis de realce do editor. Com apenas um clique em um pop-up não modal, você pode ativar ou desativar Code Vision, Parameter Hints, Unity Performance Hints, Errors, Warnings, Suggestions, Context actions e muitos outros elementos. Procure o ícone de Lápis no canto inferior direito da guia do editor de código.

Atualizações em testes de unidade

Atualizações em testes de unidade

Ajustamos as barras de ferramentas nas janelas Unit Test Session e Unit Test Explorer. 

  • Vários ícones foram movidos da barra de ferramentas esquerda para a superior.
  • Agora, é possível filtrar a árvore de testes de unidade com pesquisa de texto, usando a nova caixa de texto na barra de ferramentas superior.
  • Os status "Failed", "Aborted", e "Inconclusive" foram mesclados em um único status “Broken” por padrão. Se preferir mantê-los separados, clique no ícone de "Engrenagem" na barra de ferramentas superior.

Além disso, adicionamos três grandes recursos:

  • Você pode usar a nova funcionalidade avançada Group by nas janelas de ferramentas Unit Test Explorer e Unit Test Session para criar um agrupamento personalizado. Com o elemento Duration adicionado, agora é possível agrupar testes de unidade com base no tempo que eles levam para serem executados.
  • Você pode filtrar testes de unidade pela estrutura de destino na janela da ferramentas Unit Test Session, caso tenha mais de uma (o que é bastante comum hoje em dia) e não queira ver algumas delas.
  • Você pode exportar e importar qualquer uma das suas sessões de teste de unidade. Isso permite compartilhá-las com a sua equipe, entre seus computadores ou entre branches quando você altera algo no código e deseja executar/cobrir o mesmo conjunto de testes de unidade para ambas as filiais. Além disso, o arquivo exportado é totalmente compatível com o ReSharper, para que você possa compartilhar sessões de teste de unidade realizadas no Rider com colegas que usam o ReSharper, e vice-versa.

Saiba mais: Atualizações do executor de testes no Rider 2020.1

Cliente TFS Reactive agora em RTM

Cliente TFS Reactive agora em RTM

No Rider 2019.3, adicionamos um cliente TFS experimental que forneceu uma melhoria drástica na velocidade da ação "Checking for changes". No atual ciclo de lançamento, continuamos a colocar muito esforço no cliente. 

Por fim, nosso cliente TFS chega ao seu primeiro lançamento e traz muitas melhorias. Vamos mencionar os dois mais significativos. Primeiro, habilitar a Integração com controle de versão agora funciona para espaços de trabalho TFS criados localmente com o Visual Studio. Isso significa que você não precisa mais recriar um espaço de trabalho local do zero no Rider. Segundo, aprimoramos bastante o desempenho das operações Delete e Rollback.

Para começar a usar o cliente TFS, acesse Settings | Version Control | TFVC e habilite-o.

Atualizações do editor de código

Atualizações do editor de código

O Rider, como todos os IDEs da JetBrains, agora usa a JetBrains Mono como fonte padrão em todos os temas. Esperamos que você aproveite!

Mais um recurso do ReSharper que estava faltando no Rider até agora está finalmente aqui: namespaces podem ser importados automaticamente quando o código é colado de um arquivo na solução.

Se você edita arquivos relacionados ao NuGet manualmente, achamos que ficará feliz em receber a assistência do Rider, já que ele agora oferece suporte inicial para editar arquivos NuGet.Config, packages.config e *.nuspec, incluindo preenchimento de código, validação de sintaxe e o pop-up de documentação rápida.

Também vale a pena mencionar estes aprimoramentos secundários: 

  • Separadores de métodos agora estão disponíveis em C# para separar visualmente interfaces, classes, métodos e assim por diante.
  • Os atalhos Alt+Shift+Seta para cima/baixo/direita/esquerda executarão uma seleção de blocos da mesma maneira que no Visual Studio.
  • Dois pares de ações, "Move Caret To Code Block Start"/"Move Caret To Code Block End" e "Move Caret To Code Block Start with selection"/"Move Caret To Code Block End with selection", agora têm suporte em C# e seguem o mesmo comportamento que em outros IDEs da JetBrains.
  • Dicas de ferramentas de documentação são mostradas ao focalizar o mouse para símbolos de código realçados como erros.
Refatoração de extração de classe

Refatoração de extração de classe

Mais uma refatoração altamente requisitada e aguardada, disponível no ReSharper, finalmente chegou ao Rider– Extract Class.

Querendo saber por que você precisa dela? Imagine que você tem uma classe fazendo o trabalho que deveria na verdade ser feito por duas classes diferentes. Usar essa refatoração é a maneira mais segura e eficaz de decompor essa classe complexa em duas classes de responsabilidade única. Extract Class ajudará você a escolher métodos e campos para passar da classe antiga para a nova classe. Ela também avisa sobre dependências desfeitas e problemas de acessibilidade e sugere opções de resolução de conflitos.

Exibição Solution Explorer

Atualizações no Solution Explorer

A exibição Solution Explorer apresenta duas novas pastas úteis que fornecem mais informações sobre seu projeto: Implicit references como uma subpasta da pasta Assemblies e MSBuild import targets.

Além disso, existem várias pequenas atualizações:

  • Adicionamos à caixa de diálogo Add References um novo recurso chamado Recent Assemblies.
  • Introduzimos um designer simples para arquivos de configurações de aplicativos (*.settings).
  • Propriedades de arquivo estão disponíveis para todos os arquivos na exibição Solution Explorer (em View | Appearance | Details in Tree Views).
  • A geração de código resx agora funciona melhor para projetos .NET Standard no macOS e Linux.
Atualizações sobre cobertura de código e perfil de desempenho

Atualizações sobre cobertura de código e perfil de desempenho

Para dar a você mais controle sobre os resultados da cobertura do teste de unidade que você obtém no Rider, adicionamos filtros de cobertura. Para especificá-los, vá para Preferences/Settings | Build, Execution, Deployment | dotCover | Filtering.

Se você cria perfis de desempenho no Linux ou macOS, temos boas notícias: os aplicativos .NET Core podem finalmente ter perfis criados no modo Tracing nesses sistemas operacionais. Além disso, agora você pode anexar o profiler a aplicativos .NET Core no Linux.

Configurações de execução e compilação

Configurações de execução e compilação

  • Adicionamos uma ação muito útil: Cancel build.
  • Existem tarefas "Build/Clean Project" para todas as configurações de execução. Essas tarefas permitem selecionar quais projetos compilar ou limpar antes de iniciar uma configuração de execução.
  • O suporte para a propriedade UpToDateCheckInput MSBuild já está disponível. 
  • A interface do usuário de configurações de execução “Publish to folder” agora são compatíveis com identificadores “ARM” e qualquer identificador personalizado de “tempo de execução de destino”.
  • O MSBuild incluído foi atualizado para a versão 16.5
Descompilador e o IL Viewer

Descompilador e o IL Viewer

Adicionamos vários novos recursos ao descompilador do Rider e ao IL Viewer

  • O suporte para Tipos de referência anuláveis (NRT) está disponível no descompilador. Observação: no momento, isso só funciona em declarações, mas não nos corpos dos métodos.
  • Suporte para descompilar os membros padrão de interfaces.
  • O suporte para descompilar nomes de componentes de tuplas foi aprimorado.
  • O "IL viewer" Code Vision agora está disponível em arquivos de origem externos após a descompilação.
Suporte para controle de versão

Suporte para controle de versão

  • O Code Vision agora pode mostrar o histórico de um método. Esse recurso está habilitado por padrão no lugar de VCS Annotate (ajustável em Preferences | Editor | Code Vision | VCS Actions).
  • O pop-up Git Branches obtém um campo de pesquisa explícito e um botão Refresh reformulado.
  • Os indicadores de submissão Incoming (azul) e outgoing (verde) foram adicionados à barra de status.
  • Confira a nova caixa de diálogo “Interactively Rebase from Here”.
  • A janela de ferramentas Repositories agora se chama Git, Subversion, Mercurial ou Perforce, dependendo do VC que você está usando.
  • As exibições Diff e Merge agora oferecem suporte para realce de código.
  • Se você não tiver o Git na sua máquina, o Rider oferecerá o download e a instalação para você.
Novas vantagens para desenvolvedores F#

Novas vantagens para desenvolvedores F#

Para melhorar o suporte para F# no Rider, fizemos várias melhorias e correções que devem ajudá-lo em sua rotina diária:

  • A ação Send project references to F# Interactive está disponível.
  • A dica de ferramenta de avaliação ao focalizar o mouse funciona para mais expressões quando você está depurando: qualificadores de auto-referência em métodos e tipos (this.Property) e expressões de indexador ("foo".[1]).
  • Um modelo de arquivo Type foi adicionado.
  • Os analisadores de código agora são executados em paralelo.
  • Várias novas correções rápidas para inspeções de código já existentes, por exemplo, a correção rápida Make field mutable para a inspeção FS0005: Field not mutable.
  • Algumas novas inspeções de código com correções rápidas apropriadas, por exemplo, a inspeção “Redundant Attribute suffix”.
  • Duas novas intenções de código: Elif to If/If to Elif e Negate If expression condition.
  • O Code Vision possui uma nova ação Copy Inferred Type e não mostra mais os namespaces pai dos tipos, para tornar as informações exibidas mais curtas.
  • Extend Selection pode selecionar toda a expressão ().

Para obter mais atualizações e correções, consulte o repositório GitHub.

Desenvolvimento Webx

Desenvolvimento Web

  • Uma nova intenção para converter em encadeamento opcional e/ou coalescência anulável e para inferir parâmetros a partir de usos.
  • O pop-up da documentação pode ser exibido ao focalizar o mouse.
  • Suporte para Vuex e Composition API.
  • Executando a formatação Prettier ao salvar.
  • Caminhos completos de arquivo no pop-up Go to.
  • Suporte Yarn 2 para projetos TypeScript.
  • Para obter mais informações sobre atualizações de desenvolvimento Web, consulte Novidades no WebStorm 2020.1.
Suporte para bancos de dados

Suporte para bancos de dados

  • Exportar para Excel.
  • Suporte para as frameworks de teste utPLSQL e Tsqlt.
  • Veja os resultados no editor de código (desabilitado por padrão).
  • Novas opções de autenticação.
  • Configuração SSH compartilhada.
  • Melhor filtragem de dados no MongoDB.
  • E muitos outros recursos relacionados a bancos de dados, conforme descrito em Novidades no DataGrip 2020.1.
Outros recursos e melhorias

Outros recursos e melhorias

  • O suporte para projetos WIX (Windows Installer XML Toolset) finalmente chega ao Rider! 
  • Um novo plug-in que oferece suporte para o mecanismo de jogo Godot está disponível para o Rider 2020.1+. Ele é open source no GitHub
  • As configurações do estilo de código C# agora podem ser pesquisadas.
  • Você pode fazer com que o Rider use o mesmo arquivo de configurações (global) da máquina que o ReSharper para sincronizar as configurações de ambas as ferramentas (ajuste esse comportamento com File | Settings | Tools | ReSharper | Synchronize machine-wide Rider and ReSharper settings).
  • A formatação de código traz novas configurações que cobrem a vírgula à direita dos estilos de código C#. Elas podem ser encontradas em Preferences | Editor | Code Style | C# | Syntax Style | Trailing comma e também são compatíveis com a inspeção StyleCop SA1413 (exceto em poucos casos especiais).
Outros recursos

Outros recursos

  • O novo Modo Zen combina o Modo sem distração e o Modo de tela cheia.
  • Divida a janela de ferramentas Terminal na vertical ou na horizontal, se desejar executar as sessões do terminal lado a lado. Você pode chamar o menu de contexto do Terminal para criar, navegar e encerrar uma sessão de terminal dividida.
  • Existem muitas melhorias no Cliente HTTP. Você pode preencher URLs automaticamente e navegar até os terminais relacionados diretamente dos arquivos de solicitação HTTP; você pode gerar solicitações HTTP a partir da visualização Endpoints; e o Cliente HTTP agora preenche corretamente automaticamente as variáveis de caminho.
  • Um tema unificado IntelliJ Light agora está disponível para todos os sistemas operacionais.
  • A borda superior da janela no Windows 10 agora tem uma aparência muito melhor no modo sem borda.

Novidades no IntelliJ IDEA 2020.1