Novidades no Rider

O Rider 2020.3 vem com o suporte tão esperado para os novos recursos do .NET 5, C# 9 e F# 5. Também incluímos novos recursos, tais como a janela Immediate e o link de código-fonte privado no depurador, diagramas de dependência do projeto, Push-to-Hint e suporte a internacionalização para o framework de UI Avalonia. Os desenvolvedores Unity encontrarão atualizações para análise de Burst e suporte a shaders. E, finalmente, você pode arrastar e soltar abas para dividir o editor do jeito que quiser!

Suporte ao .NET 5 e C#

Dê as boas vindas ao primeiro lançamento do Rider com suporte .NET 5! O suporte inclui Source Generators, recursos do C# 9, novos recursos NuGet e novos frameworks-alvo (net5.0-windows e net5.0). Além disso, você pode criar, compilar, executar, depurar, além de realizar análises de profiling e cobertura em aplicativos .NET 5.

Os Source Generators são quase certamente os recursos mais populares do compilador C#. É compreensível: a capacidade de criar um novo código durante o processo de compilação e usá-lo imediatamente é muito empolgante e tem utilidade em muitas situações diferentes.

O que o Rider pode fazer aqui? Ele pode fazer o que faz de melhor e levar em consideração os arquivos gerados ao realizar refatorações, fornecer recursos do editor de código e ajudá-lo a navegar até o código gerado.

Agora os métodos parciais podem ter parâmetros de saída, tipos de retorno não nulos e qualquer tipo de acessibilidade, deixando-os mais úteis com os Source Generators. Os Source Generators podem usar a declaração de definição do método parcial para personalizar o comportamento do código gerado.

Outra novidade legal são as propriedades init-only. Essas propriedades só podem ser definidas durante a inicialização de um objeto. Então, finalmente, você pode usar inicializadores de objeto sem precisar expor a propriedade com acesso mutável!

O Rider reconhece propriedades init-only e as leva em consideração ao completar seu código, realizar a complementação generativa, analisar se a propriedade mudou em algum lugar e oferecer uma correção rápida para torná-la mutável se você mudar de ideia.

O lugar ideal para aplicar init são nos novos tipos record. Esses são tipos de referência com semântica de valor que ajudam a conseguir a imutabilidade, mas desta vez afetando todo o objeto. Mais uma vez, o Rider acompanha a evolução da linguagem, desde correções rápidas para que você possa escolher seu estilo de declaração preferido até a complementação básica.

Os registros posicionais têm um método Deconstruct() gerado pelo compilador. Rider suporta todos os recursos de desconstrução nesses objetos. Observe o pop-up ao introduzir uma variável: ele oferece a escolha entre uma variável única ou uma declaração de desconstrução. A mesma opção de escolha será oferecida quando uma função acessar a propriedade de um objeto record.

Seguindo em frente com as grandes coisas, funções locais agora podem ter atributos (bem como parâmetros e parâmetros de tipo em funções locais). Esse recurso é suportado pelas correções rápidas do Rider, inclusive o recurso muito legal de poder anotar o método como [NotNull] ou [CanBeNull] pressionando ! ou ?, respectivamente.

Outra adição útil do C# 9 é a capacidade de escrever programas de nível superior. Chega de lutar com as classes Program: você pode incluir seu código inicial imediatamente depois das diretivas using! Também foi disponibilizada ajuda para trabalhar com instruções de nível superior. Existem duas regras sobre instruções de nível superior: elas devem preceder qualquer tipo ou namespace e apenas um único arquivo do projeto pode conter código de nível superior. É muito fácil quebrar esses duas regras quando você está reorganizando, copiando e colando código. O Rider oferece correções rápidas para remediar esse problema movendo seu código de nível superior para o topo ou para outro arquivo.

Dado que o código de nível superior também é código, ele também conta com refatorações: Extract local variable e Extract method.

Saiba mais em: Declarações C# 9 de nível superior no ReSharper e no Rider

Com novas expressões de tipo de destino em C# 9, podemos omitir o tipo após a nova palavra-chave quando ele pode ser inferido do contexto de uso. O Rider oferece suporte total para esse recurso, inclusive a capacidade de executar o Find Usages no construtor e configurar o estilo de sintaxe preferido. Esse último permite que você use a sintaxe new() quando um tipo criado é evidente, ao mesmo tempo em que impõe uma especificação de tipo explícita em outros casos.

A propósito, as novas dicas de nome de tipo do ReSharper podem ajudar se todos os new() no seu código ficarem fora de controle.

Com a covariância do tipo de retorno, você não é mais obrigado a retornar o mesmo tipo em membros sobrepostos, como faz no método da classe base. Não há mais necessidade de implementar soluções alternativas para retornar um tipo mais específico.

A correspondência de padrões continua a evoluir na nova versão da linguagem. Expressões de correspondência agora permitem o uso de padrões relacionais (<, >, etc.) e lógicos (not, or, and), eliminando grande parte da verbosidade das antigas construções switch. O Rider pode ajudá-lo a analisar os padrões e reescrevê-los no estilo desejado.

Finalmente, quando foram introduzidos os parâmetros lambda descartáveis, achamos que seria bom adicionar uma correção rápida para eles.

E isso é tudo para os principais destaques da linguagem. Existem pequenas melhorias que foram adicionadas à linguagem que também são suportadas no Rider 2020.3. Isto inclui expressões condicionais dependentes do tipo de destino (target-typing), expressões lambda estáticas, métodos GetEnumerator de extensão em foreach, tipos de ponteiro de função e tipos inteiros nativos.

Depurador

Janela Immediate

Introduzindo uma nova Janela Immediate com assistência para codificação. Ele permite que você crie variáveis sintéticas quando o programa parar num ponto de interrupção e também experimentar com seu código sem reiniciar o depurador.

Quando você começa uma sessão de depuração, a janela Immediate aparece no canto inferior direito, abaixo das variáveis de inspeção no painel do depurador. Ela aceitará dados de entrada apenas quando seu aplicativo estiver num estado de pausa, o que geralmente ocorre quando atinge um ponto de interrupção.

Digite qualquer código C# válido, usufruindo de toda a gama de recursos de complementação de código à disposição.

Defina novas variáveis sintéticas. O Rider irá rastrear esses valores na janela de variáveis de uma coleção de variáveis sintéticas. Você pode inspecionar, fixar e modificar essas variáveis como faria com qualquer outra variável.

Você pode até mesmo chamar quaisquer funções membro dos objetos disponíveis ou quaisquer funções estáticas disponíveis no contexto atual usando objetos disponíveis como argumentos. Pontos de interrupção no caminho de execução da função irão suspender a execução como se fosse uma chamada normal. A chamada tem sua própria área da pilha, começando com Function Evaluation, que você pode explorar no painel Frames.

Execute instruções sem precisar atribuí-las a nenhuma variável. O Rider vai registrar o último valor retornado de uma instrução run sob o marcador $result. A janela Immediate rastreará o histórico de todas as suas instruções.

Saiba mais em: Janela Immediate - interaja com seu código enquanto depura no Rider

Novas ações

Novas ações do depurador agora estão disponíveis antes da depuração ser iniciada.

Agora você não precisa começar a depurar e navegar por várias etapas até chegar no método ou parte do código que lhe interessa. Se você usar Start Debugging and Run to Here ou Start Debugging and Run to Here Non-Stop, o Rider o levá-lo até lá, ignorando quaisquer pontos de interrupção.

Se você quer iniciar a depuração da sua aplicação e interromper a execução logo no início, assim que atingir o ponto de entrada do aplicativo, use as ações Start Debugging and Step Over ou Start Debugging and Step Into.

Você encontra essas ações em Run | Debugging Actions no menu principal.

Observe que as ações mencionadas acima estão disponíveis apenas para a configuração .NET Project/.NET Static Method.

Private Source Link

Ótimas notícias para quem estiver familiarizado com o termo “Private Source Link” - o Rider 2020.3 agora oferece suporte completo a servidores de fonte privada tanto no depurador como no descompilador integrado. O Rider oferece suporte a fontes localizadas no GitHub, GitHub Enterprise, BitBucket e Azure DevOps (ex-VSTS).

O Rider pode salvar credenciais de autenticação para facilitar o acesso futuro.

Outras atualizações do depurador

  • Implementamos a avaliação de métodos que têm parâmetros out e ref ou que declaram variáveis out na lista de parâmetros.
  • Nós aceleramos significativamente a enumeração de sequências IEnumerable.
  • O link ‘View’ agora é exibido corretamente para objetos com apresentações muito longas.
  • Strings longas não são mais truncadas quando você copia seus valores e sua avaliação foi otimizada.

Diagrama de dependências do projeto

Nossa nova ferramenta de arquitetura ajuda a visualizar dependências de projeto na sua solução e explorar sua arquitetura.

Explore o diagrama

Você pode abrir o diagrama de dependências do projeto a partir de Tools | Architecture | Show Project Diagram ou a partir do menu de contexto no Solution Explorer. Ele segue sua estrutura de solução e começa mostrando todos os itens de nível superior da sua solução. Você pode selecionar quais projetos ou pastas de solução devem estar visíveis, alterar a escala, ativar uma grade (e a opção de ajustar à grade, se necessário) e acrescentar comentários para fazer anotações em certos projetos.

Navegação

Use Ctrl+F no Windows ou Cmd+F no macOS para encontrar o projeto no qual deseja se concentrar.
O botão Show Neighbors of Selected Nodes da barra de ferramentas filtra o diagrama de dependências do projeto para o nó selecionado, suas dependências diretas e os projetos que dependem desse projeto.

Para grandes diagramas de dependências de projetos, você pode abrir a janela de ferramentas File Structure (View | Tool Windows | Structure) e percorrer os diagramas através de uma visão geral de alto nível.

Analise o acoplamento entre projetos

Clique no ícone Enable Coupling Analysis na barra de ferramentas para conduzir análises e atualizar o diagrama. A espessura, cor e estilo dos links podem variar dependendo da força do acoplamento entre os projetos. Passe o mouse sobre o link e o Rider irá mostrar uma dica de ferramenta com o número exato de usos. Clicar no link vai juntar detalhes sobre código dependente e exibi-los numa janela de ferramenta separada.

Em um diagrama de dependências do projeto, você também pode mostrar dependências transitivas com Show Transitive. Isso mostrará tanto as dependências diretas como as dependências indiretas do projeto.

Salve e compare snapshots

Salve um snapshot do diagrama de dependência do projeto a partir da barra de ferramentas e depois compare-o com a solução atual. Use o menu Tools | Architecture | Compare With Saved... para carregar e inspecionar snapshots salvos previamente. O Rider destacará as diferenças entre os diagramas.

Saiba mais em: Diagramas de dependência de projeto estão no Rider 2020.3

Exporte diagramas

A partir da barra de ferramentas, você pode exportar o diagrama como uma imagem e incluí-lo na sua documentação.

Desenvolvimento de jogos

Unity

O Rider 2020.3 traz outro grande lançamento para o nosso suporte Unity, com atualizações nas análises Burst, suporte a shaders e testes unitários, assim como um punhado de correções úteis.

Clique no ícone ao lado de qualquer método marcado com o atributo [MenuItem] do Unity, que o Rider vai pedir ao Unity que chame o método, direto do IDE.

O suporte inteligente do Rider para shaders foi atualizado. Agora, ao analisar o código, ele automaticamente usa símbolos define dos pragmas, tais como shader_feature e target. Há um novo seletor de contexto na barra de status para analisar um shader com base nos símbolos definidos no local de onde ele foi incluído.

Melhoramos a análise contextual Burst com um novo indicador Code Vision e novos avisos para o uso incorreto de SharedStatic. Você também pode usar o menu Alt+Enter para rapidamente adicionar um atributo [BurstDiscard].

Novas ações de contexto permitem um melhor controle da análise de métodos de desempenho crítico, como Update. Agora você pode pedir ao Rider que pare de tratar um método como freqüentemente chamado, ou pare de realçar um método como caro. Você até mesmo pode iniciar um novo contexto de desempenho a partir de um método arbitrário.

Houve várias atualizações nos testes unitários, com suporte para o atributo [Explicit] e recursos de testes parametrizados. Você também pode executar tanto testes no modo de edição como no modo de reprodução, durante uma única execução do teste.

A janela da ferramenta do visualizador de logs do Unity recebeu algumas melhorias úteis na sua interface do usuário, com destaque para a capacidade de filtrar com base na última vez que o jogo foi alterado para modo play ou a última vez que o AppDomain do jogo foi recarregado.

E, claro, corrigimos uma série de issues, incluindo uma correção para a mensagem “refreshing solution” que aparecia sem parar quando você não estava conectado ao editor Unity e uma nova correção rápida para remover uma mensagem de evento redundante. Também resolvemos sugestões incorretas da linguagem C# para projetos player. Por favor consulte o changelog para mais detalhes.

Rider for Unreal Engine Demonstração antecipada

O Rider for Unreal Engine ainda encontra-se em fase de avaliação pública e está programado para lançamento como parte do Rider em 2021. Você pode usar a versão para avaliação gratuitamente até o lançamento público.

Rider for Unreal Engine fornece integração perfeita com o UnrealHeaderTool para ajudá-lo a detectar mais problemas de código específicos do Unreal Engine diretamente no editor. Ao trabalhar com um projeto Unreal Engine, ele executará automaticamente o UnrealHeaderTool no arquivo que você está editando e mostrará quaisquer erros ou avisos, do mesmo jeito que ocorre com outras inspeções.

Veja a integração com a UnrealHeaderTool em ação

O poder total da análise de controle de fluxo agora chega aos arquivos shader HLSL. Ele avisa sobre código inacessível, variáveis não inicializadas, saltos de fluxo de controle redundantes, desvios condicionais e assim por diante. No Rider principal, a mesma análise é ativada para shaders do Unity na v2020.3.

Adicionamos filtros ao Unreal Log, portanto o Rider for Unreal Engine agora permite filtrar por Verbosity e Category, e você pode mostrar ou ocultar timestamps. Corrigimos um issue no qual a interface do usuário congelava quando havia muitas mensagens no painel de logs do Unreal.

O plug-in UnrealLink/RiderLink permite integração avançada entre JetBrains Rider e o Epic Games ’Unreal Editor. Ele agora está hospedado no JetBrains Marketplace e pode ser atualizado independente do build do produto.

Suporte para F#

Recursos do F# 5

Acrescentamos suporte para a nova sintaxe de interpolação de strings. Agora você pode marcar uma string com o símbolo $ para deixá-lo interpolado e, em seguida, colocar placeholders dentro do literal da string. A sintaxe de “interpolações de tipo” (%s e %d) para placeholders também é suportada.

Esta versão acrescenta suporte à palavra-chave nameof, que permite converter quase qualquer símbolo em F# para seu nome.

Por último, mas não menos importante, as declarações de open type agora também são suportadas. Usando a declaração de open type, você pode “abrir” qualquer "tipo" para importar conteúdo estático armazenado dentro do tipo.

Outros recursos e melhorias

Agora você pode gerar sobreposições ausentes nos tipos e implementações de interface usando correções rápidas e ações de contexto. Agradecemos a Matt pela ideia e implementação inicial!

Há novas dicas de ferramenta destacadas pela sintaxe para melhorar a legibilidade do código. Gostaríamos de agradecer a Saul pela implementação.

Novas ações de contexto para anotar os tipos de binding. Mais uma vez, uma agradecimento especial para Matt.

Adicionamos a capacidade de configurar a gravidade dos analisadores fornecidos pelo backend ReSharper. Observe que a maioria dos avisos/erros ainda são produzidos pelo FCS.

Novos analisadores e correções rápidas:

  • O lambda pode ser simplificado ou substituído por um analisador de funções embutido.
  • Analisador Redundant Applications, por exemplo. para remover uma chamada Ignore redundante se não houver nada a ser ignorado.
  • Analisador Redundant Patterns para melhorar seu estilo de código.
  • Uma correção rápida para converter um namespace em um módulo.

Assistência para digitação:

  • Melhor comportamento Enter nas chamadas de métodos.
  • Suporte ao novo “Surround with Quotes”.

Agora existe uma ação para renomear arquivos para corresponder com um nome de módulo / tipo.

O depurador agora controla melhor as variáveis locais em workflows assíncronos.

Melhorias em UI/UX

Nova tela de boas-vindas

Redesenhamos a tela de boas-vindas para deixá-la mais clara e moderna. Ela mantém exatamente a mesma funcionalidade, mas está mais bem organizada. Você ainda pode gerenciar seus projetos, iniciar tutoriais para aprender algo novo sobre o Rider, criar novas soluções, abrir soluções existentes ou obter uma solução a partir da VCS.

Buscar no Solution Explorer

A view Solution Explorer agora suporta a busca "true"! Ele examina todos os nós da árvore da solução (agora, até mesmo nós recolhidos), incluindo arquivos, pastas, projetos, referências, analisadores, importações e pacotes para fornecer todas as ocorrências de uma consulta de pesquisa. Você pode percorrê-las uma por uma usando atalhos do teclado ou ícones da barra de ferramentas. Para abrir o campo de pesquisa, use o atalho Ctrl+F ou o ícone de lupa na barra de ferramentas.

Abas de arrastar e soltar

Se você deseja ter várias guias abertas enquanto trabalha em um projeto, agora pode arrastar e soltar as guias de arquivo para dividir o editor na horizontal ou vertical.

Open in Right Split

Também introduzimos a ação Open in Right Split (View | Open in Right Split or Shift+Enter) para um arquivo, que divide o editor verticalmente ao abrir o arquivo. Chame essa ação na view Explorer ou em outros pop-ups de navegação quando um arquivo for selecionado, como Recent Files, Search Everywhere e Navbar.

Guias afixadas

Há um novo ícone de alfinete para abas fixadas. Clicar nele desafixa o arquivo. Você também pode afixar e desafixar suas guias arrastando-as e soltando-as sobre outros arquivos afixados ou desafixados. Se você costuma abrir muitas guias, pode manter todas elas afixadas em uma só linha. Para fazer isto, acesse Preferences/Settings | Editor | General | Editor Tabs e marque a opção Show pinned tabs in a separate row.

Realce de sintaxe em dicas de ferramenta

Implementamos o realce de sintaxe no pop-up da dica de ferramenta para deixar o conteúdo interno mais fácil de ler e entender.

Guia de visualização

Agora, você pode abrir um arquivo em uma guia de visualização com um único clique. Ao abrir um arquivo em uma guia de visualização, seu nome é exibido em itálico. Se você começar a editar esse arquivo, ele deixará de ser uma visualização e se tornará um arquivo comum. Para habilitar este recurso, clique no ícone de engrenagem na exibição Project e selecione Enable Preview Tab.

Ação Build na Touch Bar

Adicionamos a ação Build à Touch Bar para usuários macOS.

Controle de versão

Agora, você pode preparar mudanças diretamente do Rider. Clique no ícone + para adicionar seus arquivos ao novo nó Staged na exibição Commit. Você também pode preparar mudanças diretamente na medianiz ou na exibição Diff. Para habilitar este recurso, acesse Preferences/Settings | Version Control | Git e marque a caixa de seleção Enable staging area. Para saber mais, leia este post do blog.

Adicionamos uma nova guia Git à caixa de diálogo Search Everywhere. Agora você pode encontrar hashes e mensagens de submissão, tags e branches na caixa de diálogo Search Everywhere.

Fizemos algumas melhorias para o trabalho com branches. O Rider agora mostra todas as ações disponíveis para o branch selecionado. As ações Merge into Current e Rebase Current onto Selected foram renomeadas para Pull into Current Using Merge e Pull into Current Using Rebase, respectivamente.

Outras atualizações de VCS:

  • O menu VCS agora recebe um nome de acordo com o sistema de controle de versão que você está usando no momento.
  • Agora, patches são criados no formato Git.

Plug-ins

DPA (Dynamic Program Analysis)

Agora o plugin Dynamic Program Analysis está disponível em macOS e Linux para aplicações .NET Core, portanto não é mais apenas para Windows. Ele está disponível para aplicações que têm como alvo o .NET Core 3.0 ou posterior.

Agora o plugin DPA é capaz de analisar alocações de memória quando um depurador é anexado a um processo em execução.

Azure DevOps

O plug-in do Azure DevOps pode criar uma nova área de trabalho no servidor ou importar uma que já exista.

dotCover

O plugin do dotCover permite realizar análises de cobertura de aplicações voltadas para .NET 5 no Windows, macOS e Linux.

A janela Unit Tests Coverage permite filtrar os resultados da cobertura por framework de destino.

O realce fornecido pelo dotCover no editor de código pode ser alternado nas configurações do plugin ou no pop-up 'Configure highlighting level'.

Agora, você pode definir quais projetos devem ser construídos quando uma sessão de testes contínuos for acionada. Isto permite acelerar as sessões de testes contínuos.

dotTrace

Agora, o profiler de desempenho permite criar perfis de aplicações .NET 5 no Windows, macOS e Linux.

Acrescentamos um gráfico de chama ao profiler de desempenho: esta é uma visualização da árvore de chamadas que agiliza a localização de métodos lentos.

O plugin dotTrace para Rider agora tem um recurso de dobramento de árvore de chamadas que antes estava disponível apenas na versão standalone do dotTrace. Esse recurso ajuda a simplificar a análise da árvore de chamadas, dobrando cadeias de chamadas que não pertencem aos assemblies e módulos de usuário.

Azure Toolkit para Rider

Ao usar o emulador de armazenamento Azurite no Rider, você agora pode explorar o armazenamento de fila. Você pode adicionar mensagens, visualizar o conteúdo da mensagem e muito mais.

Adicionamos suporte inicial para executar a nova versão alfa do Azurite 3.9 incluíndo um emulador de armazenamento de tabela.

Em projetos do Azure Functions, as configurações de execução/depuração são mostradas no menu de contexto do projeto para deixá-las mais acessíveis. Também reorganizamos os menus de contexto na janela da ferramenta Azure Explorer para que ações comuns pudessem ser executadas mais rapidamente.

AWS Toolkit para Rider

  • Suporte básico para o Amazon Elastic Container Registry.
  • Suporte para depuração local de funções Lambda no .NET Core 3.1 (requer SAM CLI versão 1.4.0 ou posterior).
  • A lista de buckets S3 carrega significativamente mais rápido do que antes.
  • O Rider 2020.1 é agora a versão mínima para usar o plugin; O suporte para a versão 2019.3 foi descontinuado.
  • Mais detalhes no Marketplace.

Markdown

Agora, a ferramenta Markdown tem uma UI de visualização melhor e aprimora ainda mais a experiência dos usuários. Você pode personalizar formatos Markdown em Preferences | Settings | Editor | Code Style | Markdown. O botão Auto-Scroll Preview no canto superior direito do editor permite sincronizar a rolagem do painel de visualização e do editor. Também adicionamos suporte para Mermaid.js.

Editor de código

Dicas de inserção

Acreditamos no poder das dicas de inserção, mas também sabemos que o ambiente deve ser mantido o mais limpo e organizado possível. Criamos um novo mecanismo "Push-to-Hint" para dicas de inserção, para manter o melhor dos dois mundos.

No modo de visibilidade Push-to-Hint, as dicas embutidas não são mostradas por default. Elas serão exibidas se você pressionar e segurar a tecla Ctrl e ocultas assim que você soltar a tecla Ctrl.

Fornecemos configurações bastante granulares: você pode dizer ao Rider quais dicas devem estar sempre habilitadas, quais devem ser mostradas ao pressionar e quais realmente não são importantes para você. Use a configuração "Visibility" para cada tipo de dica.

Também trabalhamos nas dicas para conversão implícita de tipos. Essas conversões podem resultar em perda de dados ou degradação do desempenho. Agora o Rider pode indicar onde uma conversão implícita está acontecendo.

Cabeçalho de arquivo

Agora um modelo de cabeçalho de arquivo pode ser especificado em Preferences/Settings | Editor | File Header Template. Você pode usá-lo para adicionar um aviso de copyright, informações da empresa, nome de usuário atual, etc.

Estilo e formatação de código

Adicionamos um recurso há muito esperado para detectar e definir configurações de formatação do editor de código. Selecione um trecho de código, pressione Alt+Enter e depois selecione Format Selection / Configure ou Format Selection / Detect Formatting settings. O Rider vai mostrar uma janela com a lista de todas as configurações que afetam essas linhas específicas. Os valores que são diferentes dos seus defaults são destacados e você também poderá ver os que são diferentes com a opção "Only show changed values".

Saiba mais em: Detecção automática de regras de formatação de código com o Rider

Continuamos adicionando configurações mais granulares ao mecanismo de formatação. Isto é o que adicionamos nesta versão:

  • Configurações para organizar padrões de propriedade permitem que você instrua o Rider a colocar um padrão simples numa única linha e sobre como prefere que padrões longos sejam quebrados. Também há uma configuração para alinhar padrões de propriedade em colunas.
  • Agora, linhas em branco podem ser adicionadas em torno dos accessors de propriedades ou eventos.
  • Para o Visual Basic .NET existe uma opção para adicionar um espaço após o operador +/- unário.

Adicionamos uma opção para selecionar um estilo de sintaxe preferível para os valores default em Preferences/Settings | Editor | Code Style | C# | Syntax Style aba: default vs. default(T).

Existem algumas atualizações no suporte a .editorconfig:

  • Novo parâmetro “Spaces around ‘=’” na exportação para .editorconfig. Seu valor é detectado automaticamente em arquivos existentes e pode ser definido manualmente para novos arquivos. Por default, esse parâmetro está definido como "true".
  • Suporte às propriedades Roslyn: file_header_templates, dotnet_sort_system_directives_first e dotnet_separate_import_directive_groups.

Agora você pode ajustar a endentação da linha de código atual com a tecla Tab. Atribua a tecla Tab para a ação Emacs Tab para usar este recurso.

Suporte a Avalonia

Análise de código

Como é típico para todas as frameworks do tipo WPF, a análise de código fornece muitas inspeções de código comuns com correções rápidas apropriadas para arquivos code-behind C# e arquivos .axaml, incluindo “Possible ‘System.NullReferenceException’” e “Class/Property {...} is obsolete: Use {...}”.

Além das inspeções WPF comuns, há uma série de inspeções específicas do Avalonia, como as inspeções “Path to resource is case-sensitive” ou “ColumnDefinitions tag can be converted to attribute” com correções rápidas. Para a última, há uma ação de contexto no atributo ColumnDefinitions="*,Auto,*" para convertê-la novamente em uma tag <Grid.ColumnDefinitions>.

Incluímos suporte para as sintaxes $self, $parent, ^ e # nos bindings do Avalonia, assim como a validação de índices no array $parent[].

Há suporte estendido para CompiledBinding e para a extensão x:CompileBindings. O Rider sabe que DataType é necessário aqui e pede para você especificá-lo nos bindings de seu código.

A correção rápida “Create from usage” está disponível para todos os tipos de propriedades Avalonia.

O suporte Avalonia XAML inclui a compreensão do sistema de estilo similar ao CSS.

As Inlay Hints ajudam a melhor entender o código que você está vendo.

Complementação de código

A complementação de código e informações de parâmetro estão disponíveis para todas as palavras-chave XAML, todos os tipos de extensões de marcação, x:Name, propriedades Style, propriedades Source para StyleInclude e muito mais.

Navegação

Você pode navegar com facilidade para o tipo de dados compilado vinculado, propriedade vinculada, tipo de controle Avalonia e declarações x:Name. O Rider também pode navegar diretamente do XAML ao código externo descompilado, incluindo suas propriedades setter de estilo e namespaces xmlns referenciados.

Find Usages

O Find Usages lhe ajuda a encontrar todos os usos de bindings de método, atributos x:Name, classes Style, setters e todo tipo de propriedade.

Refatorações

As refatorações Rename e Safe Delete agora reconhecem todos os tipos de uso no código XAML do Avalonia e os atualiza de acordo.

Hierarquia e estrutura do código

Você pode observar a hierarquia e a estrutura do código XAML do Avalonia.

Desenvolvimento Web

Suporte para Blazor

Continuamos a acrescentar mais suporte ao Blazor. Esta iteração foi sobre o suporte a parâmetros de tipo genéricos e sua inferência de tipo a partir dos usos, além da eliminação de problemas de desempenho na abertura de soluções. Para a lista completa dos issues corrigidos, consulte nossorastreador de bugs público.

Suporte para Tailwind CSS

Agora, o Rider pode lhe ajudar a trabalhar com o Tailwind CSS de maneira muito mais produtiva. Instale o plugin Tailwind CSS a partir de Preferences / Settings | Plugins, e o IDE complementará automaticamente suas classes Tailwind, mostrará uma visualização do CSS resultante quando você passar o mouse e oferecerá suporte às personalizações que você fizer usando arquivos tailwind.config.js.

Crie um componente React a partir do uso

Tem um componente React não resolvido no seu código? Coloque o cursor sobre ele, pressione Alt+Enter e selecione Create class / function component da lista. O Rider criará o construto de código relevante para você.

Outras melhorias de destaque incluem:

  • Para arquivos JavaScript e TypeScript, a barra de navegação agora permite pular para elementos de código específicos no arquivo atual (mais informações).
  • Melhor formatação para literais de modelo com CSS e HTML (esta é uma melhoria muito específica, mas o issue relacionado teve muitos votos – mais informações).
  • Suporte completo a pnpm (detalhes).

Confira Novidades no WebStorm para conhecer todas as melhorias no desenvolvimento Web que também estão disponíveis no Rider 2020.3.

Suporte para bancos de dados

SQL para MongoDB

Agora você pode usar SQL para consultas em bancos de dados MongoDB! Criamos nosso próprio tradutor JS-SQL que torna isto possível.

Apenas consultas SELECT funcionam. As cláusulas que funcionam são JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT e OFFSET. Um post completo sobre o que é suportado pode ser encontrado aqui.

Suporte a Couchbase

Estamos sempre felizes em receber um novo banco de dados na família e o nosso mais novo membro é o Couchbase! É importante mencionar que o Rider suporta o serviço Couchbase Query não o serviço Couchbase Analytics.

Autenticação Azure AD

Agora você pode usar o Azure AD para fazer login no seu banco de dados.

Confira Novidades no DataGrip para todas as melhorias no banco de dados que também estão disponíveis no Rider 2020.3.

Outras atualizações

Testes de unidade

Testes de unidade podem ser iniciados para um framework de destino específico diretamente através do editor de código por meio do menu Alt+Enter.

Agora você pode exportar os resultados da execução de testes unitários na aba Unit Test Session.

Xamarin

Para quem gasta tempo configurando projetos iOS via arquivos “information property list”, agora há um novo e completo editor para Info.plist em projetos Xamarin.iOS em todas as plataformas. Você não precisa mais abrir o Xcode para editar esses arquivos.

Diversos

  • Configurações de execução que são armazenadas como arquivos agora são acrescentadas aos itens de solução na pasta Run Configurations. Isto permite que o Rider trabalhe corretamente com as configurações de execução armazenadas em pastas personalizadas.
  • Você agora pode armazenar modelos do Run Configuration como arquivos e compartilhá-los através do VCS.
  • Também acrescentamos a capacidade de realizar expressões matemáticas simples no campo de pesquisa do Search Everywhere.
  • O tema do IDE pode ser sincronizado automaticamente com as configurações do sistema operacional no Windows e no macOS. Ative a opção Sync with OS em Settings | Appearance & Behavior | Appearance | Theme.
  • O desempenho da Solution-Wide Error Analysis melhorou em aproximadamente 25% graças ao desligamento do cálculo de inspeções greedy.