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.
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.
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.
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.
Esta versão traz o suporte a vários recursos adicionais da versão de demonstração do C# 11.
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
:
required
na complementação de código. required
foi adicionado a Modifiers order na página Preferences/Settings | Editor | Code Style | C# | Syntax Style
. 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 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.
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 {{...}}
).
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.
>>>
), incluindo suporte para sobrecarregamento do operador >>>
definido pelo usuário. 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>
. 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.
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.
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.
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.
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.
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.
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
.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
O Assembly Explorer fornece uma apresentação melhor para assemblies ReadyToRun (R2R) e NGen:
ngen
ou R2R
, agora são exibidos ao lado do nome de cada assembly. 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.
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.
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.
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.
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.
Mathf
sejam usados. 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.
O Rider agora inclui o dotMemory, nossa ferramenta de profiling de memória. Estes são os seus principais recursos:
Observe que o plug-in dotMemory não permite coletar snapshots e funciona apenas com o Windows na versão 2022.2.
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.
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.
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
.
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.
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
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.
Saiba mais: Novidades no DataGrip 2022.2