Novidades no Rider

O Rider 2022.2 inclui melhorias gerais de desempenho, com otimizações no desempenho de inicialização e no mecanismo de análise no âmbito da solução. O suporte para C# 11 foi estendido para abranger membros necessários, operadores verificados definidos pelo usuário, strings brutas e padrões de lista. Neste lançamento, você pode aplicar as mesmas configurações de layout de janela a todas as soluções nas quais está trabalhando. Além disso, o suporte ao Unreal Engine tem duas novas ações, New Unreal Module e New Unreal Plugin, bem como a capacidade de especificar servidores de símbolos para obter símbolos de biblioteca ao depurar.

Desempenho

Runtime do.NET 6 para o back-end Windows

Migramos o back-end Windows do Rider para o runtime do .NET 6. Ele agora usa o runtime do .NET 6 para executar o serviço de back-end em todos os sistemas operacionais suportados: Windows, macOS e Linux. Graças às otimizações no próprio runtime do .NET 6, o desempenho geral do Rider melhorou em comparação com a versão v2022.1.

Em função dessa mudança, também substituímos o NGen pelo utilitário CrossGen para criar imagens nativas no Windows após a instalação do Rider. Como o CrossGen funciona com o runtime do .NET e é multiplataforma, isto agiliza a inicialização do Rider e a abertura de soluções.

Observe que o Rider não executa o CrossGen durante a instalação, mas apenas quando você inicializa o Rider pela primeira vez. Isto significa que a primeira inicialização pode demorar um pouco mais, mas todas as inicializações subsequentes serão mais rápidas.

Melhorias na "inicialização a frio"

Melhorias na "inicialização a frio"

As soluções são inicializadas mais rapidamente quando você as abre pela primeira vez (“inicialização a frio”), e o Rider não tem informações sobre elas. Na inicialização a frio, todos os projetos são carregados duas vezes: primeiro o IDE carrega os projetos para obter as informações sobre cada um, executa “NuGet restore” e, quando tudo está pronto, ele carrega os projetos uma segunda vez.

Otimizamos o primeiro estágio de carregamento dos projetos para que o Rider recupere apenas as informações necessárias para restaurar pacotes NuGet. Nossas métricas internas mostram que a nova implementação é aproximadamente 40% mais rápida.

Otimizações de análise por toda a solução

Nesta versão, otimizamos bastante a utilização de memória pelo Rider, em termos tanto do tráfego de memória (número de alocações de memória) quanto do consumo de memória, através do modo de Análise por Toda a Solução LIGADO.

O mecanismo da Análise por Toda a Solução usa a memória para armazenar a lista de problemas na solução e também as informações sobre o uso de tipos e membros para elaborar relatórios de uso abrangendo toda a solução (inspeções de código tais como "membro público nunca é usado"). Os dados de uso são "quentes", ou seja, precisam ser constantemente atualizados à medida que você edita o código e não podem ser descarregados para o disco. Isto pode consumir uma quantidade significativa de memória, se a sua solução contiver muitos tipos e membros. Revisamos os dados armazenados na memória e encontramos padrões que nos permitiram eliminar duplicações e normalizar os dados. Também usamos tipos especializados de coleções para reduzir o conjunto de trabalho mais ainda. Essas otimizações resultaram em uma melhora de 5-10x no consumo de memória e em um carregamento mais rápido da Análise por Toda a Solução.

C# 11

Esta versão traz o suporte a vários recursos adicionais da versão de demonstração do C# 11.

Membros Obrigatórios

Membros Obrigatórios

No C# 11, os tipos class, struct e record ganharam a capacidade de declarar uma lista de membros obrigatórios. Trata-se de uma lista de todas as propriedades e campos considerados obrigatórios e que precisam ser inicializados juntamente com a instância de um tipo. Os tipos herdam automaticamente essas listas dos seus tipos-base, proporcionando uma experiência suave que remove código pronto repetitivo.

Além de reconhecer a palavra-chave required para membros dentro de um tipo class, struct ou record, o Rider oferece suporte adicional à palavra-chave required:

  • Há uma palavra-chave required na complementação de código.
  • A maior parte dos erros e alertas do compilador está disponível.
  • O modificador required foi adicionado a Modifiers order na página Preferences/Settings | Editor | Code Style | C# | Syntax Style.
Membros Obrigatórios

Adicionamos uma nova correção rápida Add initializer for required members para casos em que você já criou o objeto de um tipo, mas ainda não inicializou os membros. Essa correção gera automaticamente todos os membros required que estiverem faltando no seu objeto – você só precisa preencher os valores dos membros com dados significativos.

Operadores "checked" definidos pelo usuário

Operadores checked definidos pelo usuário ajudam os desenvolvedores a criar operadores definidos pelo usuário que operam em tipos nos quais o overflow aritmético seja um conceito válido. O Rider mostra todos os erros e avisos do compilador. Para dar suporte total a operadores checked definidos pelo usuário, o Rider tem algumas inspeções adicionais e uma nova ação de contexto.

Atualizamos a inspeção Unchecked/checked context is redundant para levar em conta operadores checked quando eles forem usados neste contexto.

Se você tiver um conjunto de operadores definidos pelo usuário e alguns deles já tiverem uma versão checked, o Rider ajudará você a propagar os operadores checked a todo o conjunto. Uma nova inspeção, chamada The operator does not have a matching checked operator while other operators do, notificará a você quais operadores ainda não têm um operador checked e sugerirá uma correção rápida para gerar as versões checked automaticamente.

Se você ainda não tiver usado operadores checked na sua base de cócigo, mas quiser começar a adicioná-los, uma nova ação de contexto chamada Create matching checked operator será muito conveniente. Essa ação está disponível em cada operador definido pelo usuário e gera uma versão "checked" de um operador diretamente a partir do menu Alt+Enter com apenas um clique.

Strings brutas

O C# 11 tem uma melhor capacidade de incorporar outras linguagens ou formatos de texto no código C#, introduzindo o conceito de strings brutas.

O Rider tem suporte básico a strings "raw", incluindo erros de compilação, parsing correto e realce de cores para a sintaxe """", pares de aspas e marcadores dentro de strings interpoladas (sintaxe {{...}}).

Padrões de lista

O C# 11 continua expandindo os padrões de conjunto disponíveis na linguagem. Desta vez, o C# permite fazer correspondência em estruturas semelhantes a listas, tais como arrays, strings e coleções semelhantes a List<T>.

O Rider 2022.2 tem suporte total a padrões com verificação de erros, complementação e análise de código. Ainda estamos trabalhando para adicionar inspeções de código, para sugerir usar os padrões de lista no código existente, e ações adicionais de refatoração.

Mais recursos do C# 11

Mais recursos do C# 11

  • O Rider 2022.2 oferece suporte total ao novo operador unsigned right shift (deslocamento para a direita sem sinal) (>>>), incluindo suporte para sobrecarregamento do operador >>> definido pelo usuário.
  • O Rider 2022.2 tem suporte ao uso simplificado de valores Span<char> como substitutos para instâncias de strings, já que no C# 11 é possível fazer a correspondência direta de padrões entre constantes de string e os valores dos tipos Span<char> e ReadOnlySpan<char>.

Análise de código

Declarações top-level

O .NET 6 introduziu novos modelos de projetos com o uso de declarações top-level do C# 9. As declarações top-level simplificam declarar uma classe Program ou um método public static void Main(string[] args). Mas às vezes, a declaração explicita class Program é necessária na inicialização, ou mais desejável de ser usada. O Rider 2022.2 adiciona a nova ação de contexto To explicit 'Program' class, para executar uma transformação para o estilo antigo.

Ao mesmo tempo, se você tiver uma classe de inicialização Program já existente e quiser migrar para declarações top-level, poderá usar a nova ação de contexto Convert to top-level code.

Suporte a INotifyPropertyChanged atualizado

Nesta versão, reformulamos nosso suporte a INotifyPropertyChanged. Anotações externas não são mais necessárias para detectar APIs comuns para INotifyPropertyChanged. Isso nos permitiu dar suporte a mais frameworks MVVM e classes de base INotifyPropertyChanged automaticamente. Agora, emitimos um método SetField, que permite a sintaxe mais concisa para notificações INotifyPropertyChanged.

Agora também é possível adicionar notificações property change para todas as propriedades daquele tipo ou arquivo.

Refatorações no menu Alt+Enter

Para aumentar a possibilidade de refatorações serem descobertas, revisamos as refatorações de uso mais comum e introduzimos ações de contexto relacionadas no menu Alt+Enter. Essas ações dependem do contexto atual.

Adicionamos a ação de contexto Extract method quando você chama o menu Alt+Enter em um trecho selecionado de código.

Agora as refatorações Change Signature, Transform Parameters, Convert to extension method e Convert Property To Method estão todas disponíveis como ações de contexto sobre assinaturas de membros.

Mais sugestões de uso de um operador nameof

Agora o Rider 2022.2 reconhece os registros de DependencyProperty em projetos de WPF e sugere usar um operador nameof para capturar o nome da propriedade CLR correspondente. Os modelos dinâmicos incorporados também foram atualizados para emitir nameof em vez de literais de string.

Muitas vezes, o Rider não consegue reconhecer o significado especial de um determinado literal de string usado para especificar o nome de alguma entidade do seu código, como o nome de um membro ou um tipo. Para esses casos, introduzimos uma nova ação de contexto Capture element name, para literais de string que podem referenciar uma entidade de código no contexto que contém o literal de string.

Busca e substituição estruturais

Agora, correções rápidas vindas de padrões de Busca e Substituição Estruturais (Structural Search And Replace, SSR) podem ser aplicadas no escopo de um arquivo, pasta, projeto, ou da solução inteira. Ele afeta padrões personalizados do usuário, inspeções de código integradas do Rider e as correções correspondentes com base em SSR.

Outros

Agora o Rider 2022.2 detecta alguns padrões de atribuição no seu código e sugere código C# mais idiomático, com correspondência de padrões.

Agora o Rider 2022.2 consegue substituir alguns padrões is sob expressões ?: pela forma mais concisa as sob a expressão ??, na prática eliminando uma variável temporária.

Interface/experiência do usuário

Configurações padrão para o layout de janelas

Configurações padrão para o layout de janelas

Implementamos uma maneira de aplicar as mesmas configurações de layout de janelas a todas as soluções nas quais você trabalha. Por exemplo, se você mover uma janela de ferramentas para a direita, ela permanecerá nesse local para todas as suas soluções.

Esse comportamento será o padrão se você for novo com o Rider. Caso contrário, você pode habilitá-lo no menu principal selecionando Windows | Layout Settings | Use the Same Layout for All Projects.

Configurações de solução reprojetadas

Neste lançamento, reprojetamos a forma como as configurações da solução são mostradas. Projetos como Unity, Unreal Engine ou Xamarin geralmente têm muitas configurações, destinos e plataformas. Anteriormente, combinações de todas essas entidades produziam um grande número de itens no menu Solution Configurations. A partir do lançamento 2022.2, você não precisa mais examinar uma longa lista de itens para selecionar a combinação exata de configuração, destino e plataforma. Basta clicar em cada tipo de parâmetro, um por um, até selecionar a combinação desejada.

Configurações de solução reprojetadas

Para reduzir a desordem na barra de ferramentas principal, movemos a lista de configurações de solução para o menu suspenso do ícone de build (o martelo verde). O feedback e as estatísticas que coletamos nos disseram que os usuários não alteram suas configurações de solução com frequência suficiente para justificar a presença de um widget à parte na barra de ferramentas. No entanto, se você precisar das configurações, elas estarão disponíveis no triângulo suspenso ao lado do ícone de martelo verde. Isto abrirá a mesma lista que você está acostumado a usar.

Se quiser mover as configurações da solução de volta à barra de ferramentas, você pode selecionar Show Configuration on Toolbar na lista.

A lista de configurações de solução ainda está na barra de ferramentas quando você trabalha em projetos Unity, Unreal Engine ou Xamarin, pois essas configurações são muito usadas nesses tipos de projetos.

Widget Run/Debug redimensionável

Widget Run/Debug redimensionável

Em resposta ao feedback da comunidade, tornamos possível alterar a largura do widget Run/Debug na barra de ferramentas principal. Se houver espaço disponível na barra de ferramentas para estender o widget Run/Debug, você poderá arrastar o canto esquerdo do ícone do widget e redimensioná-lo. Isto significa que você pode criar mais espaço para o widget quando quiser ou precisar.

Ação Merge All Project Windows

Ação Merge All Project Windows no macOS macOS 11+

Para o macOS, introduzimos a capacidade de organizar seu espaço de trabalho combinando todas as janelas de projeto abertas em uma só, transformando cada janela em sua própria aba. Para realizar essa ação, acesse Window | Merge All Project Windows.

Tela de boas vindas

Tela de boas vindas

Atualizamos a forma como a barra de progresso Cloning repository é exibida na tela de boas-vindas do Rider. Agora, ela aparece à direita na lista Projects, tornando-a mais evidente e fácil de usar.

Configurações de complementação de código

Configurações de complementação de código

Agora você pode acessar Code Completion Settings e configurar suas preferências diretamente do botão de três pontos verticais no pop-up de complementação de código.

Suporte para MAUI Prévia antecipada

Suporte para MAUI

Introduzimos uma prévia antecipada do nosso suporte ao .NET Multi-platform App UI (.NET MAUI). Neste lançamento, já oferecemos suporte a projetos destinados a plataformas Android e iOS. Você pode usar configurações de execução para executar e depurar seu projeto, bem como implantar seu aplicativo num dispositivo-alvo. Observe que ainda não há suporte total para macOS, Mac Catalyst, Blazor Hybrid e WinUI.

Learn more: macOS Environment Setup for MAUI Development

Solution Explorer

Personalize a nova barra de ferramentas

Refatoração Safe Delete

Implementamos a refatoração Safe Delete em nível de projeto. Você pode invocá-la com a tecla Delete ou com a ação Refactor This em um projeto no Solution Explorer. O Rider pesquisará os usos do projeto selecionado. Se houver algum uso, serão mostrados conflitos. Caso contrário, o projeto será excluído, e o Rider removerá quaisquer referências ou importações restantes. Também há uma opção para remover um projeto sem essas verificações. Basta desmarcar a opção Search for usages quando a caixa de diálogo Safe Delete for exibida, e o Rider não executará essa busca.

Melhor suporte para filtros de solução

Melhor suporte para filtros de solução

O Rider 2022.2 facilita muito o trabalho com soluções filtradas. Agora, você pode filtrar um projeto, um conjunto de projetos, uma pasta de solução ou até mesmo todos os projetos da solução resultante. Para fazer isso, use a ação Solution Filter | Remove project no menu de contexto em um projeto, em uma pasta de solução ou o nó de solução raiz da exibição Solution Explorer. Para ver quais projetos foram filtrados, ative o modo Show All Files na exibição Solution Explorer e use a ação Solution Filter | Add Project no menu de contexto.

Melhor suporte para filtros de solução

Além dessas operações básicas, o Rider agora fornece duas ações mais avançadas, Load Direct Project Dependencies e Load Entire Project Dependency Tree. O uso dessas ações fará com que o Rider verifique todas as dependências do projeto de destino e carregue o conjunto necessário de projetos. Em seguida, você poderá começar a trabalhar rapidamente na solução filtrada.

Assembly Explorer

Assembly Explorer

O Assembly Explorer fornece uma apresentação melhor para assemblies ReadyToRun (R2R) e NGen:

  • A maneira como as assemblies ReadyToRun (R2R) e NGen são apresentadas no Assembly Explorer foi aperfeiçoada. Um pequeno ícone com aparência de processador, bem como rótulos ngen ou R2R, agora são exibidos ao lado do nome de cada assembly.
  • A árvore Metadata tem o cabeçalho ReadyToRun.
Outros recursos

Outros recursos

  • A exibição Solution Explorer mostra arquivos fonte criados por geradores de fontes. Você pode encontrá-los em Dependencies | <Nome da framework de destino> | Source Generators.
  • Os projetos são classificados em ordem alfabética real nas exibições Solution Explorer, File System e Unity Explorer.

Desenvolvimento de jogos

Suporte para o Unreal Engine

Novo módulo Unreal

Novo módulo Unreal

A ação de criar um novo módulo com lógica de jogo acompanha uma longa lista de tarefas: adicionar uma pasta, adicionar um arquivo Build.cs à pasta, criar uma classe que inicializa o módulo, atualizar os arquivos .uproject e Target.cs e assim por diante. Agora, o Rider tem uma ação para ajudar você a automatizar essas tarefas: Add | New Unreal Module.

Saiba mais

Novo Plug-in Unreal

Novo Plug-in Unreal

Se você já tentou criar novos plug-ins no Unreal Editor, essa nova ação parecerá familiar para você. Agora, é possível criar diferentes tipos de plug-ins diretamente do Rider. Basta usar a ação Add | New Unreal Plugin e ele gerará todos os arquivos necessários para o novo plug-in.

Saiba mais

Servidores de símbolos

Servidores de símbolos

Durante a depuração, às vezes os símbolos da biblioteca nem sempre estão disponíveis na sua máquina local. Nesse caso, você pode usar servidores de símbolos. No Rider no Windows, agora você pode configurar o depurador para usar o servidor de símbolos de sua escolha.

Saiba mais

Suporte para testes de especificações

Suporte para testes de especificações

O Rider agora oferece suporte a testes de especificações no framework de testes de automação do Unreal Engine. Se você tiver um conjunto de testes definidos no método Define após a macro DEFINE_SPEC ou as macros BEGIN_DEFINE_SPEC e END_DEFINE_SPEC, o Rider os descobrirá com sucesso, para que você possa executá-los e observá-los na exibição Unit Tests.

Chamadas de função do tipo Emplace

Chamadas de função do tipo Emplace

O Rider agora entende que chamadas de função do tipo Emplace (como TArray<..>::Emplace) implicam a construção de objetos e, portanto, avisará você sobre argumentos inválidos transmitidos ao construtor. Você pode visualizar dicas de nomes de parâmetro e informações de parâmetros enquanto digita argumentos. Você também pode ir para uma definição de construtor diretamente de uma chamada Emplace, e vice-versa.

Outras atualizações

  • Substituímos o botão Build solution por um botão Build startup project na barra de ferramentas principal para projetos Unreal Engine.
  • Em projetos Unreal Engine, a lista de complementação de código agora inclui os especificadores de metadados de Widgets.
Suporte para Unity

Suporte para Unity

  • Uma nova barra de ferramentas está disponível para projetos Unity, e o status da conexão agora é mostrado na barra de ferramentas em vez de na barra de status. Além disso, os botões Play/Pause/Step foram removidos da barra de ferramentas por padrão, mas podem ser novamente adicionados.
  • Adicionamos inspeções para garantir que os valores de retorno dos métodos Mathf sejam usados.
  • Você não precisa mais reiniciar o editor do Unity para iniciar o processo de profiling. Agora o profiler pode se anexar e desanexar dos processos do Unity em execução.

Plug-ins

dotCover dotUltimate

Adicionamos um indicador de resumo de cobertura ao editor. Isso pode ser útil se você achar que o realce vermelho e verde produzido pelo plug-in dotCover é cansativo: a nova ferramenta é muito menos intrusiva. Procure o ícone em forma de escudo no widget Inspections. A cor e o preenchimento refletem a cobertura do código do documento atual e, ao clicar nele, você navegará pelas instruções sem cobertura.

Nova janela de ferramentas Notifications

dotMemory dotUltimate somente no Windows

O Rider agora inclui o dotMemory, nossa ferramenta de profiling de memória. Estes são os seus principais recursos:

  • Dois modos de profiling de memória estão disponíveis no widget Run e em Run | Switch profiler configurations no menu principal: Memory (sampled allocations) e Memory (full allocations). Você pode saber mais sobre a diferença entre esses modos na Ajuda do dotMemory.
  • Você pode anexar o profiler a um processo em execução a partir do menu Run.
  • Você também pode assistir em tempo real ao desenrolar do Gráfico de Linha do Tempo. Selecione um intervalo e abra a exibição Memory Allocations. Isso é equivalente à mesma visualização no dotMemory Standalone e permite que você vá mais fundo na análise de um período de tempo específico.

Observe que o plug-in dotMemory não permite coletar snapshots e funciona apenas com o Windows na versão 2022.2.

Saiba mais

Indicador de zoom

Markdown

Agora, é possível gerar facilmente sumários em arquivos Markdown com base nos cabeçalhos dos documentos. Essa nova ação está disponível nos menus pop-up Insert e Generate, que você pode invocar por meio do atalho Alt+Insert ou clicando com o botão direito do mouse. O Rider inserirá um sumário na posição atual do cursor e o delimitará com tags <!-- TOC -->, para que você possa atualizá-lo mais tarde chamando o mesmo menu.

dotTrace dotUltimate

Você não precisa mais reiniciar o editor do Unity para iniciar o processo de profiling. Agora o profiler pode se anexar e desanexar dos processos do Unity em execução.

Desenvolvimento Web

Suporte para componentes Angular standalone

Suporte para componentes Angular standalone

Estamos trabalhado no suporte ao Angular 14 no Rider. A adição mais importante que fizemos neste lançamento foi o suporte para componentes Angular standalone. Agora, o Rider 2022.2 reconhece corretamente componentes, diretivas e pipes marcados como standalone: true.

Atualizações para o Vue 3

Atualizações para o Vue 3

O Rider 2022.2 oferece melhor suporte para o Vue 3. Por exemplo, ele agora entende o estreitamento de tipos em diretivas v-if/else. Além disso, foram feitas melhorias no suporte ao Pinia, a solução de gerenciamento de estado recomendada pela equipe do Vue que funciona como um armazenamento global. Tanto a complementação quanto a resolução agora funcionam no Vue com a biblioteca do Pinia, e você pode navegar até ações e propriedades de estado no armazenamento.

Suporte para TypeScript 4.7

Suporte para TypeScript 4.7

O Rider 2022.2 inclui o TypeScript 4.7, oferecendo suporte a novos recursos de linguagem, como moduleSuffixes e ESM no Node.js. Ele inserirá automaticamente a extensão .js na instrução de importação se module estiver definido como node16 ou nodenext no seu arquivo tsconfig.json. Além disso, o Rider oferece suporte ao campo typesVersions em arquivos package.json.

Saiba mais: Novidades no WebStorm 2022.2

Suporte para F#

Reformulamos o pop-up Parameter Info para F#.

Parameter Info contém detalhes sobre os argumentos esperados de uma função. O pop-up aparece enquanto você escreve uma aplicação de função ou uma chamada de método, ou você pode pressionar Ctrl+P para vê-lo enquanto lê seu código.

A partir da v2022.2, o pop-up Parameter Info oferece suporte a aplicações com currying e realça os sobrecarregamentos de métodos corretos. Ele também mostra descrições de métodos, funções e parâmetros, valores padrão de parâmetros, informações sobre métodos de extensão e anotações CanBeNull/NotNull da JetBrains. Além disso, você pode ver o conteúdo de Parameter Info em atributos.

Agora, você pode usar a versão global ou local da ferramenta dotnet do Fantomas. O Rider usará a ferramenta apropriada automaticamente, permitindo que você sincronize a versão do Fantomas na sua equipe.

Uma nova correção rápida, Change type of binding, será útil quando um tipo de retorno definido for diferente do tipo real de uma expressão. Special thanks goes to Florian Verdonck for implementing this quick-fix.

You can take a look at the full release notes for more information about F# support in Rider 2022.2.

Suporte para bancos de dados

Suporte para bancos de dados
  • Introduzimos dois novos modos de resolução: Playground e Script. Você pode encontrar mais informações sobre as diferenças entre os dois neste artigo de blog.
  • A autenticação do Windows está novamente disponível para o Microsoft SQL Server.
  • Agrupamentos e conjuntos de caracteres agora são gerados com o DDL da tabela para o Microsoft SQL Server.
  • O Rider agora oferece suporte básico a mais três bancos de dados: DuckDB, Mimer SQL e Apache Ignite.

Saiba mais: Novidades no DataGrip 2022.2