Novidades no Rider 2024.1

O Rider 2024.1 oferece um novo recurso para monitorar o desempenho do seu aplicativo e obter métricas importantes. Também oferece linhas fixas, para você compreender melhor onde está no seu código e navegar mais rapidamente através dele, e um diálogo New Project atualizado, para uma configuração mais rápida e fácil do projeto. A versão 2024.1 também ajuda na depuração, ao fornecer um visualizador de coleções e mostrar o tempo das etapas entre dois pontos de interrupção. Os desenvolvedores de jogos podem desfrutar de um novo conjunto de recursos para o Odin Inspector, o popular ativo do Unity, e do suporte ao framework Slate UI, do Unreal Engine.

Principais atualizações

Janela de ferramentas Monitoring

Nova janela de ferramentas Monitoring

O Rider 2024.1 traz a nova janela de ferramentas Monitoring, que permite a você monitorar o desempenho do seu aplicativo .NET e obter métricas importantes no plano de fundo durante a execução ou depuração.

Saiba mais

Linhas fixas

Introduzimos linhas fixas no editor, para simplificar o trabalho com arquivos grandes e a exploração de novas bases de código. Esse recurso mantém os principais elementos estruturais, como inícios de classes ou métodos, fixados na parte superior do editor quando você rola o código. Assim, os escopos ficam sempre à vista e você pode navegar imediatamente pelo código clicando em uma dessas linhas fixas.

Visualizador de coleções

Inspecione coleções, tais como arrays, listas, dicionários e outros tipos enumeráveis, para compreender melhor o estado dos dados do seu programa durante a depuração e identificar quaisquer problemas em potencial relacionados à manipulação dos dados.

Saiba mais

Diálogo New Project atualizado

Reformulamos completamente o diálogo New Project, para tornar os novos projetos fáceis de configurar. O diálogo oferece um suporte abrangente a configurações de projeto e parâmetros de modelos específicos do .NET, e agora você pode instalar o SDK-alvo e a carga de trabalho apropriada da MAUI diretamente a partir do diálogo.

Saiba mais

Interface/experiência do usuário

Diálogo New Project atualizado

Reformulamos completamente o diálogo New Project, para reduzir a carga cognitiva durante a configuração de novos projetos. Você pode esperar o seguinte nesse diálogo atualizado:

  • Suporte a todas as opções de configuração de projetos específicas do .NET — por exemplo, aplicativos de Web progressivos ao criar aplicativos em WASM no Blazor.
  • Suporte a parâmetros em modelos personalizados de projeto.
  • A possibilidade de instalar o SDK-alvo da sua solução diretamente no diálogo.
  • A possibilidade de instalar a carga de trabalho apropriada da MAUI a partir do diálogo.

Opção para reduzir a escala de todo o IDE

Antes, já era possível dar zoom para ampliar ou diminuir o IDE inteiro, redimensionando todos os elementos da interface de usuário ao mesmo tempo. Porém, o redimensionamento original estava limitado à faixa entre 100% e 200%. Agora adicionamos a capacidade de diminuir a escala do IDE para 70%, dando a você mais flexibilidade quanto ao tamanho de tudo.

Janela de ferramentas Terminal reformulada

Esta versão traz uma janela de ferramentas Terminal reformulada. Ela ganhou aperfeiçoamentos tanto visuais quanto funcionais, projetados para tornar as tarefas baseadas em terminal mais convenientes e simples. Esta atualização melhora o visual da ferramenta e amplia seu conjunto de recursos.

Você pode ativar o novo terminal em Settings/Preferences | Tools | Terminal | Enable New Terminal.

Para mais informações sobre o terminal reformulado, confira esta postagem no blog do IntelliJ IDEA.

Análise de código

Suporte a C#

Mais conversões para expressões de coleção

Você agora receberá sugestões para converter mais construções do seu código-fonte em expressões de coleção do C# 12, como um array vazio ou a declaração e inicialização de ImmutableArray.

Análise Collection was modified

Adicionamos a nova inspeção Possible 'System.InvalidOperationException: Collection was modified', que avisa quando uma coleção for modificada ao ser iterada dentro de loops foreach, já que essa modificação pode levar a uma exceção em tempo de execução. Essa análise leva em consideração casos nos quais há uma saída do loop depois da modificação da coleção. Esses casos não provocarão o alerta. Esta inspeção vem com uma correção rápida correspondente, para ajudar você a resolver esse problema instantaneamente.

Atualização em Generate | Formatting Members

Generate | Formatting Members permite que você gere código padronizado que substitui o método ToString() e retorna uma string que faz sentido para os seus tipos. A partir da versão 2024.1, este recurso oferece suporte a mais tipos, tais como ISpanFormattable, IUtf8SpanFormattable e IFormattable.

Suporte aperfeiçoado a recursos descartáveis em métodos assíncronos

  • [MustDisposeResource] Melhoria nas anotações: agora a análise do código em C# garante que os recursos retornados por métodos assíncronos, incluindo os envolvidos por Task<IDisposable> e ValueTask<IDisposable>, sejam descartados corretamente, ajudando a evitar o descarte acidental da própria tarefa.
  • Valores de retorno semelhantes a tarefas: Na versão 2024.1, a análise correta de valores de retorno semelhantes a tarefas garante que o recurso esperado seja verificado quanto ao descarte e também inclui recursos obtidos através de .ConfigureAwait(...), .AsTask() ou .Result.

Atualizações na refatoração Change Signature

Estas são algumas das melhorias que fizemos na refatoração Change Signature:

  • Esta refatoração agora tem suporte a métodos Deconstruct. Você pode adicionar, remover, reorganizar e renomear parâmetros e essas alterações se refletirão tanto na declaração quanto nos usos do método.
  • Agora a complementação de código está disponível para parâmetros de tipos. Isso significa que quando você precisar especificar um tipo para List<>, por exemplo, você poderá usar a complementação de código para selecionar facilmente o tipo desejado, como int.
  • Os namespaces dos tipos são abreviados automaticamente ao adicionar ou atualizar parâmetros. Isso ajuda a manter o código limpo e simplificado depois de aplicar a refatoração. Por exemplo, se você especificar o tipo System.Collections.Generic.List<System.Int16> no diálogo Change Signature, ele será abreviado automaticamente para List<short> no código resultante.
  • Esta refatoração agora tem suporte a mais recursos das últimas versões do C#, como os modificadores in e ref readonly e tipos record.

Atualizações na refatoração Make Static

Nesta versão, a refatoração Make Static tem suporte a parâmetros de construtores primários. Eles aparecem na lista Introduce parameters e têm um ícone separado para ajudar a distingui-los facilmente. Esta refatoração também está disponível para funções locais.

Modo de alta utilização de recursos na análise de toda a solução

Estamos refinando ativamente o modo de alta utilização de recursos na análise de toda a solução. Isso reduzirá significativamente o tempo gasto na análise, usando o paralelismo de CPUs de forma mais eficiente. Aperfeiçoamos o perfil de alocação de memória das atividades de análise de código, para minimizar o tempo gasto na coleta de lixo. Esse processo de refinamento ainda está em andamento, mas gostaríamos que você ativasse esse modo e nos desse o feedback sobre a sua experiência.

Desempenho

  • Ficou mais fácil e eficiente renomear elementos do seu código. Esta mudança também afeta outros componentes essenciais do Rider, levando a melhorias de desempenho em vários recursos, incluindo o Find Usages.
  • O desempenho da refatoração Move to Another Type com membros estáticos também melhorou significativamente ao lidar com classes grandes.

Suporte à biblioteca protobuf-net

Agora a análise de código oferece suporte ao atributo ProtoContract e ao enum ImplicitFields, da biblioteca protobuf-net. Ambos podem ser usados para marcar membros implicitamente usados para serialização. Como resultado, esses membros não são mais sinalizados com alertas de unused members

Suporte ao F#

Agora a geração de overrides está disponível em expressões de objetos, através de novas correções rápidas para membros faltando, complementação de código e a refatoração Generate.

Agora você também pode ver os "cases" em uniões ao pesquisar pelos usos delas. Isso facilita ver como as instâncias de tipos são criadas e correspondidas por padrões.

Adicionamos o modelo Postfix new, que cria instâncias de tipos de registros e expressões de objetos para classes e interfaces.

Foi implementado o suporte a linhas fixas para F#, tornando mais fácil visualizar o contexto ao trabalhar com tipos e funções mais longos.

Há outras novas correções rápidas e ações de contexto com suporte para F#. Você pode ler a respeito dessas e outras alterações nas notas completas de lançamento no GitHub.

Verificador ortográfico inteligente

Seguindo os passos do ReSharper, o Rider também ganhou um verificador ortográfico e gramatical atualizado. O novo verificador ortográfico tem suporte a mais de 20 idiomas e detecta erros de linguagem natural dentro das linguagens de programação com suporte no Rider (C#, C++, VB.NET), em linguagens de marcação (HTML, XML, XAML) e comentários.

Depuração em .NET

Visualizador de coleções

O visualizador de coleções do Rider 2024.1 fornece representações gráficas de coleções (arrays, listas, dicionários e outros tipos enumeráveis), permitindo que você expanda e comprima elementos, visualize valores individuais e navegue facilmente pela estrutura de dados. Ele é útil para compreender o estado dos dados do seu programa durante a depuração e diagnosticar problemas relacionados à coleta, manipulação ou processamento de dados.

Tempo das etapas

Ao depurar, a capacidade de avaliar o tempo que o depurador leva para executar o código entre dois pontos de interrupção pode ser extremamente valiosa. Se você achar que o tempo dessas etapas está longo demais, isso pode indicar problemas de desempenho no seu código. Agora, ao depurar um aplicativo com o Rider, você verá uma dica in-line mostrando o tempo decorrido entre o último ponto de interrupção e o atual.

Pontos de interrupção in-line

Pontos de interrupção in-line

A partir desta atualização, o Rider permite que você crie vários pontos de interrupção em uma mesma linha de código, se ela contiver várias declarações. Você pode criar os pontos de interrupção usando as dicas in-line correspondentes ou através de um atalho de teclado (Ctrl + F8).

Opção de inserção Run to cursor reformulada

Na versão 2024.1, estamos implementando nossa opção Skip to cursor da mesma forma como ela funciona no IntelliJ IDEA. A nova opção de inserção Run to Cursor fornece uma maneira rápida de navegar até uma linha específica do código durante a depuração. Depois que seu programa é suspenso, você pode passar o mouse sobre a linha de código na qual deseja continuar a execução. Em seguida, pode usar o pop-up Run to Cursor para executar seu código até chegar à linha onde o cursor está posicionado.

Hot Reload para WASM no Blazor

Agora o Hot Reload está disponível para executar e depurar aplicativos em WebAssembly (WASM) no Blazor. Agora o Hot Reload funciona para arquivos .cs, .razor e .css (incluindo arquivos .razor.css com escopo).

Este recurso fica habilitado como padrão. Você pode configurá-lo em Settings/Preferences | Build, Execution, Deployment | Hot Reload.

Suporte a dumps de processos de .NET

Dumps de processos são cruciais na depuração, porque eles permitem que você examine o estado do programa no momento de um erro, mesmo se o problema não puder ser facilmente reproduzido. Antes, o Rider só podia processar core dumps de C++. Agora o IDE também permite que você importe dumps de processos de .NET.

Para importar um dump de processo, vá até Run | Debug Core Dump ou simplesmente arraste e solte o arquivo do dump no editor.

AI Assistant

Explain with AI

Adicionamos um novo botão Explain with AI logo ao lado de uma mensagem de exceção ou de erro enviada por causa de uma falha em um teste de unidade ou build, ou durante uma sessão de depuração.

Rename with AI

Ao renomear uma variável local, você receberá sugestões de nomes por IA no pop-up de complementação de código.

Plug-in do AI Assistant

Observe que na versão 2024.1, o AI Assistant não vem mais incluído e agora está disponível como um plug-in à parte. Essa mudança foi provocada pela necessidade de oferecer mais flexibilidade na tomada de decisões quanto ao uso de tecnologias que utilizam IA, dando a você mais controle sobre as suas preferências e as exigências dos seus ambientes de trabalho. O AI Assistant ainda requer uma assinatura ativa do JetBrains AI.

Desenvolvimento de jogos

Unreal Engine

Suporte para C++

Estas são algumas melhorias notáveis no suporte a C++:

  • Change Signature traz novos recursos, incluindo a possibilidade de mudar o tipo de um parâmetro entre um ponteiro, uma referência e um tipo de valor.
  • Call Tracking agora tem suporte a cadeias de chamadas para fora.
  • Agora você pode facilmente personalizar o estilo dos comentários de documentação gerados. Além disso, estão disponíveis inspeções gramaticais dentro dos comentários da documentação.
  • A implementação reformulada dos módulos do C++20 melhora o desempenho e fornece suporte a partições de módulos internos.

O suporte a C++ no Rider é fornecido pelo ReSharper C++. Confira as Novidades do ReSharper C++ 2024.1 para mais detalhes.

Blueprint na pilha de chamadas do depurador

Estamos empolgados de adicionar o suporte para Blueprint na pilha de chamadas do depurador. Agora, em vez de mostrar um endereço de memória anônimo na pilha de chamadas, o Rider mostra informações sobre a chamada ao Blueprint, entremeadas com o seu código existente em C++. Assegure-se de atualizar o seu plug-in do RiderLink para a última versão!

Formatação para Slate e navegação inteligente

Esta versão adiciona o suporte ao framework Slate UI do Unreal Engine, ensinando ao Rider como usar os comandos Go to Definition e Find Usages, além da refatoração Rename, usada para renomear os símbolos declarados pelas macros do Slate.

Agora o Rider formata corretamente código na DSL do Slate, seja quando invocado diretamente como uma ação de reformatação ou durante a digitação.

Recursos inteligentes para o Blueprint

A integração inteligente do Rider com o recurso Blueprint continua, com o suporte à adição de core redirects ao renomear instâncias UENUM, além da complementação de caminhos de ativos nos nomes de recursos em código em C++.

Atualizações para o Perforce, interoperabilidade com o Visual Studio e mais

Continuamos a trabalhar no suporte ao Perforce, com algumas melhorias úteis de qualidade de vida que facilitam o login quando a sua sessão vence e a colocação de arquivos na lista de alterações correta durante refatorações Rename.

Também corrigimos um problema com a UnrealBuildTool que às vezes provocava uma nova build completa de um projeto que já tinha tido uma build no Visual Studio. Isso melhora muito a experiência de usar os dois IDEs. A correção está no Unreal Engine 5.4 e em todas as versões do Rider.

E não se esqueça de conferir todas as mudanças para C++ no mecanismo do ReSharper C++.

Unity

Suporte ao Odin Inspector

Temos o prazer de anunciar que estivemos trabalhando com nossos amigos da Sirenix para oferecer suporte ao popular ativo Odin Inspector, para o Unity. O Rider agora reconhece e realça campos e propriedades serializados pelo Odin Inspector, oferece complementação e inspeções de nomes de grupos em atributos de layout e mostra pré-visualizações da classe GUIColor do Odin. O Rider também reconhece os atributos de faixas do Odin e usa esses valores em suas próprias análises de valores inteiros, alertando você se algum valor sair da faixa.

Saiba mais

Melhorias em variantes de shaders

O Rider 2024.1 expande o suporte a palavras-chaves de shaders, introduzido na versão 2023.3. Você pode habilitar ou desabilitar diferentes palavras-chave ao editar os seus arquivos de shaders. Por sua vez, isso habilita ou desabilita o realce e a análise de código em diferentes branches do pré-processador. Esta versão adiciona o suporte a palavras-chave implícitas de shaders, diretivas de pré-processador e palavras-chave locais específicas de etapas do processamento, através do sufixo _KEYWORD_DEFINED.

Análises de "null" e verificações de tempo de vida de objetos

Esta versão atualiza a forma como o Rider realça a manipulação (possivelmente inesperada) pelo Unity de comparações de igualdade com null na verificação do tempo de vida do objeto de jogo subjacente. Em vez de mostrar um alerta se uma verificação de null em C++ evitar a verificação de tempo de vida, agora o Rider realça quando uma comparação com null efetua a verificação.

Mergulharemos neste assunto em mais detalhes em uma futura postagem no blog.

Depuração, indexação de ativos e outros recursos

A depuração foi incrementada, com o Rider oferecendo mais suporte específico a DOTS, como a adição de um nó-filho Entity ao examinar uma instância de IJobEntity no painel Watches. Os pontos de pausa também foram atualizados para funcionarem com sistemas em DOTS. O visualizador de valores de depuração de texturas recebeu algumas correções de bugs e o novo visualizador de coleções ajuda com coleções de objetos de jogo.

Também houve algumas melhorias de desempenho no parsing de ativos, correções no reconhecimento de campos serializados e inúmeras outras pequenas correções e atualizações. Você pode ler mais na lista de alterações.

Godot

Continuamos nosso suporte ao Godot, com mais atualizações no plug-in opcional que você pode instalar a partir da aba Plugins das Configurações. As alterações recentes incluem:

  • Realce de sintaxe para mais tipos de arquivos do Godot, incluindo .gd, .tscn, .tres e .godot, e melhor realce no .gdshader.
  • Agora o Rider detecta automaticamente o runtime correto do .NET para executar ou depurar testes do Godot a partir de launchSettings.json (JetBrains/godot-support#125).
  • Adicionamos um botão Start Godot Editor à barra de ferramentas principal, semelhante à ação já disponível para o Unity (JetBrains/godot-support#119).

Desenvolvimento Web

Resolução de referências para as diretivas @addTagHelper e @removeTagHelper

Agora o Rider resolve referências para nomes de assemblies especificados dentro das diretivas @addTagHelper e @removeTagHelper nas visualizações do Razor. Como resultado, agora você pode desfrutar da complementação de código, da capacidade de localizar usos e da facilidade de navegação pelo código.

Além disso, o Rider realça quaisquer nomes não resolvidos de assemblies como alertas, para que você possa reconhecê-los facilmente nas suas visualizações do Razor.

Modelo de arquivo Blazor Component

Agora você pode gerar arquivos adicionais, como .razor.cs, .razor.css ou .razor.js, ao gerar um modelo de arquivo Blazor Component.

Correções rápidas para a criação de props e estados do React

O Rider 2024.1 apresenta várias novas correções rápidas para o React que permitem criar props e estados dinamicamente. Você pode aplicar essas soluções rápidas usando o atalho Alt+Enter.

Para mais informações sobre as melhorias no desenvolvimento para a Web, consulte esta página.

Controle de versão

Esta versão traz atualizações ao suporte a VCS no Rider, incluindo:

  • Revisões de código dentro do editor para repositórios do GitLab e GitHub.
  • Verificações de status de CI na janela de ferramentas Git.
  • Prevenção de commits de arquivos grandes em repositórios.
  • Nova aba Stash na janela de ferramentas Commit.
  • Opção para excluir pastas e arquivos de comparações.
  • E mais!

Saiba mais sobre todas as alterações aqui.

Trabalho com bancos de dados

Estas são algumas das melhorias mais notáveis para trabalhar com bancos de dados usando o Rider 2024.1:

  • Filtro local no editor de dados.
  • Visualização de um só registro.
  • Possibilidade de mover colunas em arquivos em CSV.
  • Mais recursos para UUIDs.
  • Estilo de código alinhado para INSERT de várias linhas.
  • Complementação de colunas em cláusulas GROUP BY.

Para mais informações sobre as melhorias ao trabalhar com bancos de dados, consulte esta página.

Plug-ins

Plug-in .NET Aspire para Rider

.NET Aspire

O .NET 8 SDK introduziu o .NET Aspire, uma nova abordagem para os complexos problemas de build de aplicativos distribuídos no ambiente de .NET. Respondendo a essa inovação, estamos oferecendo uma nova ferramenta integrada — o plug-in do .NET Aspire para o Rider.

Esse plug-in está disponível para o Rider 2024.1 e pode ser baixado diretamente do JetBrains Marketplace ou via Settings/Preferences | Plugins.

Saiba tudo sobre o .NET Aspire e o novo plug-in nesta postagem no blog.

Suporte ao Frozen Object Heap (FOH) dotUltimate

Agora a ferramenta incorporada de profiling dotMemory oferece suporte ao Frozen Object Heap (FOH), um recurso introduzido inicialmente com o .NET 6 SDK como parte das melhorias de desempenho na coleta de lixo.

O FOH aloca uma área dedicada da memória para objetos imutáveis. Esses objetos não são alterados depois de serem alocados e não estão sujeitos à coleta de lixo. O suporte a essa tecnologia permite que o dotMemory execute uma análise mais detalhada da memória usada pelos objetos imutáveis no FOH, melhorando a otimização do uso da memória.

Profiling de desempenho e memória para aplicativos de desktop em MAUI dotUltimate

Agora os profilers incorporados dotTrace e dotMemory têm suporte a aplicativos usando MAUI e aplicativos para macOS usando .NET.

Frameworks-alvo com suporte:

  • MAUI para Windows: net8.0-windows, net7.0-windows.
  • MAUI para Mac: net8.0-maccatalyst, net7.0-maccatalyst.
  • Aplicativos para macOS: net8.0-macos, net7.0-macos.

Clique aqui para mais informações sobre os modos de profiling disponíveis.

Novo plug-in do Azure Toolkit

O novo plug-in do Azure Toolkit para o Rider é um projeto de código aberto que ajuda os desenvolvedores em .NET a criarem, configurarem, testarem, gerenciarem e implantarem com facilidade aplicativos de Web altamente disponíveis e escalonáveis no Azure.

O plug-in pode ser baixado e instalado de dentro do JetBrains Rider e está disponível no JetBrains Marketplace.

Diversos

Suporte aprimorado ao GitHub Actions

Nesta versão, melhoramos o suporte ao GitHub Actions. O foco do nosso desenvolvimento é em enriquecer os seus fluxos de trabalho de CI/CD oferecendo uma maior eficiência e recursos inteligentes projetados especificamente para o GitHub Actions.

A lista de melhorias inclui:

  • Amplo suporte à complementação automática em vários contextos do GitHub Action.
  • Recurso de branding para action.yml.
  • Complementação de imagens do Docker.
  • Complementação de caminhos de arquivos em JavaScript.

Para mais informações, confira esta postagem no blog do IntelliJ IDEA.

Opção de arrastar e soltar arquivos de projeto no diagrama Type dependency

Melhorias em diagramas de dependências de tipos

Os diagramas de dependência de tipos, introduzidos na versão 2023.3, ganharam uma atualização funcional, com novas maneiras de configurar os diagramas:

  • Opção de adicionar um nó a um diagrama usando Search.
  • Opção de remover nós da visualização do diagrama.
  • Capacidade de adicionar tipos relacionados a um tipo específico em um diagrama.
  • Opção de arrastar e soltar arquivos de projeto no diagrama Type dependency.

Para descobrir mais maneiras de gerar diagramas de dependência de tipos para o seu aplicativo, veja esta postagem no blog.

Suporte ao formato de empacotamento WebCIL para WebAssemblies

Descompilador

Agora o Assembly Explorer dentro do Rider tem suporte ao formato de empacotamento WebCIL para WebAssemblies.

Esse suporte abrange:

  • Descompilação para WebCIL.
  • A capacidade de visualizar arquivos .wasm no Assembly Explorer.
  • Subárvores de metadados para nós de WASM no Assembly Explorer, incluindo cabeçalhos de WASM e WebCIL.