Nouveautés de Rider

Rider 2022.3 prend en charge le SDK .NET 7, ce qui inclut les dernières fonctionnalités de C# 11. Cette version améliore significativement les performances, notamment le temps de démarrage et d'exécution de Rider sous WSL 2 (sous-système Windows pour Linux 2) lors du développement à distance. Nous avons remanié plusieurs aspects de l'expérience/interface utilisateur, comme par exemple la possibilité d'ancrer les fenêtres d'outils dans les configurations à plusieurs écrans. Pour finir, cette version renforce l'intégration avec les éditeurs Unity et Unreal.

Performances

Performances

Nous avons effectué plusieurs modifications afin d'augmenter la vitesse de démarrage de Rider et de réduire le temps d'ouverture d'une solution :

  • La nouvelle version de l'installateur de Rider permet d'ajouter des fichiers exécutables à la liste d'exclusion Windows Defender, ce qui accélère considérablement la vitesse de démarrage.
  • Rider peut désormais charger un fichier de solution et créer son arborescence de projet instantanément, vous n'avez donc plus à attendre la fin de l'initialisation du backend.
  • Nous avons supprimé toutes les barres de chargement de l'explorateur de solutions pour obtenir une interface utilisateur plus épurée. À partir de maintenant, toutes ces barres de progression du chargement seront affichées dans la barre IDE Status.
  • Nous avons introduit un nouvel analyseur C# qui met uniquement en évidence les éléments de syntaxe de base au cours du démarrage, puis offre une expérience complète une fois Rider lancé et votre solution entièrement chargée.
  • Nous avons également apporté plusieurs améliorations aux performances du backend de Rider. We’ve enabled server garbage collection (GC) to get better memory throughput for the backend process. De plus, nous avons mis à jour l'environnement d'exécution du service de langage du backend de Rider de .NET 6 vers dernière version .NET 7. Pour finir, il est désormais possible d'exécuter des builds en parallèle lors de la conception, si les projets ne sont pas interdépendants. La combinaison de toutes ces modifications accélère de façon notable le chargement d'une solution avec de nombreux projets.

Apprenez-en plus sur les améliorations de performance de Rider ici.

Prise en charge de WSL 2

Rider prend désormais en charge le sous-système Windows pour Linux 2 (WSL 2) via la fonctionnalité de développement à distance de l'IDE. Vous pouvez donc utiliser Rider sur une instance WSL 2 pour parcourir vos solutions et sources, ainsi que pour créer, déboguer et exécuter des applications comme si elles étaient stockées localement.

Il est possible de lancer un processus de configuration simple directement depuis l'écran de bienvenue de Rider. L'interface utilisateur est fournie par la fonctionnalité de développement à distance, de sorte que WSLg n'est pas nécessaire et qu; un client RemoteDev local est automatiquement installé. Pour plus d'informations, consultez la documentation sur le développement à distance.

Interface/Expérience utilisateur

Ancrage des fenêtres d'outils

La très attendue possibilité d'ancrer les fenêtres d'outils aux onglets flottants de l'éditeur est finalement disponible ! Pour faciliter l'organisation de votre espace de travail et l'interaction avec Rider sur plusieurs moniteurs, nous avons implémenté une option permettant de glisser les fenêtres d'outils hors de la fenêtre principale et de les ancrer aux onglets flottants de l'éditeur.

Mise à jour de Search Everywhere

Nous avons optimisé l'algorithme derrière la liste de résultats de Search Everywhere afin d'améliorer la prévisibilité de son comportement et la précision de la sélection des éléments recherchés. Désormais, lorsque vous commencez à saisir votre requête, l'IDE fige les premiers résultats de recherche qui apparaissent et ne les réorganise pas lorsque d'autres options sont trouvées (comme cela était le cas dans les versions précédentes).

Nouvelle boîte de dialogue Attach to process

Nous avons introduit une nouvelle boîte de dialogue Attach to process pour améliorer l'expérience utilisateur, notamment pour attacher un processus via SSH. Nos objectifs sont de vous aider à trouver et sélectionner le bon processus plus rapidement et de permettre à l'IDE de mémoriser le débogueur choisi.

Action coller remaniée

Action coller remaniée

Nous avons amélioré l'expérience d'édition en remaniant le comportement de l'action coller (⌘V / Ctrl+V). Désormais, lorsque vous copiez (⌘C / Ctrl+C) ou coupez (⌘X / Ctrl+X) une ligne sans aucun code sélectionné, l'action coller ajoutera le contenu du presse-papiers au-dessus de la ligne actuelle, et non au niveau de votre curseur comme dans les versions précédentes.

Collage du code JSON en tant que Classes

Collage du code JSON en tant que classes

Nous proposons désormais une action Edit | Paste Special: JSON as Classes qui vous permet de « coller intelligemment » des objets. Par exemple, si vous devez copier du code JSON et le coller en utilisant cette action, cela générera automatiquement des classes C# basées sur ce code JSON.

Nouvelle interface utilisateur Version préliminaire

Nous vous invitons à activer la nouvelle interface utilisateur pour les IDE basés sur IntelliJ dans Preferences/Settings | Appearance & Behavior | New UI Preview. Cette nouvelle interface s'inscrit dans une approche continue de réduction de la complexité et des distractions pour vous aider à vous concentrer sur votre travail.

Autres modifications

Nous poursuivons également l'implémentation de petites optimisations de l'expérience et de l'interface utilisateur de Rider, pour le rendre à la fois plus pertinent et pratique :

  • Nous avons nettoyé le menu Add de façon à n'y conserver que les éléments en rapport avec la solution ou le projet en cours.
  • L'action Open in Terminal a été déplacée dans le menu contextuel Solution Explorer.
  • La section File | New du menu principal a été renommée File | New Solution, car cela correspond mieux à l'action concernée.
  • Nous avons ajouté une action qui permet de passer d'une action à une autre dans Solution Explorer. Désormais, si vous faites un clic droit sur une solution autre que celle sur laquelle vous êtes en train, vous verrez un menu contextuel dans lequel vous pourrez sélectionner Open pour fermer la solution active et en ouvrir une autre simultanément.

Prise en charge du SDK .NET 7

Prise en charge du SDK .NET 7

Rider 2022.3 prend officiellement en charge le SDK .NET 7, notamment :

  • Les modèles de projets actualisés.
  • La gestion centralisée des packages NuGet.
  • Prise en charge des groupes de routage de l'API minimale en ASP.NET dans la fenêtre d'outils Endpoints.
  • Les nouvelles fonctionnalités de C# 11, parmi lesquelles les types de fichiers locaux, les littéraux UTF-8, les champs ref et le mot-clé scoped.
  • La possibilité de créer, d'exécuter et de déboguer des projets ciblant le nouveau SDK.

Prise en charge de C#

C# 11

Littéraux UTF-8

Littéraux UTF-8

Nous avons ajouté la prise en charge basique des littéraux UTF-8. L'analyse de code suggère maintenant d'utiliser le suffixe u8 pour un littéral au lieu de la méthode System.Text.Encoding.UTF8.GetBytes() ou un tableau d'octets comportant des symboles UTF8 corrects. En outre, un ensemble d'avertissements et d'erreurs de compilateur a été ajouté pour les littéraux UTF-8.

Types de fichiers locaux

La prise en charge basique des types de fichiers locaux inclut la compréhension de la nouvelle syntaxe, le modificateur d'accessibilité file pour les types, ainsi que des avertissements et des erreurs de compilateur avec des suggestions de correctifs rapides, tels que Move class to outer scope lorsque le modificateur file est spécifié pour une classe imbriquée. Vous trouverez aussi une action contextuelle très pratique pour convertir un type général en type de fichier.

Chaînes brutes

Chaînes brutes

Rider peut désormais convertir les chaînes ordinaires et textuelles en chaînes brutes. Cela signifie également que de nombreuses fonctionnalités existantes pour les chaînes sont désormais disponibles pour les chaînes brutes.

Suggestions de schémas de listes

Suggestions de schéma de liste

Dans cette version, nous avons introduit des suggestions pour utiliser la nouvelle syntaxe de schéma de liste de C# 11 (au lieu des vérifications classiques de longueur de collection avec l'expressions d'accès de l'indexeur qui en résulte) pour vérifier les éléments correspondants de la collection.

Membres virtuels statiques

Avec C# 11, vous pouvez utiliser les modificateurs abstract et virtual pour les membres static dans les interfaces et utiliser ces membres dans du code générique avec des paramètres de types spécifiés par cette interface. Rider a été mis à jour afin de gérer les membres polymorphiques de type static de la même façon que les membres polymorphiques ordinaires :

  • Marques d'héritage dans la gouttière.
  • Navigation vers l'implémentation/les membres parents.
  • Génération des implémentations manquantes.
  • Les suggestions de saisie semi-automatique du code après le mot-clé override incluent aussi les membres de l'interface, ce qui facilite l'implémentation des membres abstraits ou virtual static.
Opérateur de décalage à droite non signé (>>>)

Opérateur de décalage à droite non signé (>>>)

Rider peut désormais reconnaître les modèles de code complexes que les développeurs C# doivent écrire afin d'effectuer un décalage à droite non signé pour des types de données avec signe, et suggère d'utiliser l'opérateur de décalage à droite non signé (>>>) en C# 11 à la place.

Correspondance des modèles dans les spans

Correspondance des modèles dans les spans

Si vous analysez des Spans de caractères, vous utilisez probablement la méthode MemoryExtensions.SequenceEqual fréquemment. C# 11 introduit un raccourci pour ce type de vérification. Vous pouvez désormais simplement faire correspondre des Span de caractères avec des littéraux de chaînes avec les expressions is ou switch.

Rider suggère d'utiliser les expressions is ou switch plutôt que de nombreuses instructions if.

Champs ref et mot-clé scoped

À partir de C#11, vous pouvez déclarer les champs ref dans les structs ref. Rider prend en charge cette nouvelle règle de syntaxe, fournit l'ensemble des erreurs et des avertissements de compilateur, affiche le mot-clé ref lors de la saisie semi-automatique du code et permet d'initialiser ces champs dans un constructeur.

Il prend aussi maintenant en compte le nouveau mot-clé scoped, que vous pouvez utiliser sur les arguments by-ref ou ref struct et les variables locales. La prise en charge inclut l'analyse correcte de la nouvelle syntaxe, le mot-clé scoped dans la saisie semi-automatique du code et la préservation du mot-clé scoped lors de la génération de substitutions de méthodes. Elle vérifie également la compatibilité des modificateurs scoped et inclut des correctifs rapides pour les paramètres scoped qui ne concordent pas lors des substitutions, des implémentations d'interface et des conversions de délégués.

C# 11 et .NET 7 ont également introduit des modifications des règles de sécurité ref du langage. Ces modifications déterminent les opérations qui sont disponibles pour les variables by-ref et ref struct, de façon à assurer la sécurité ref dans le code géré avec l'introduction de champs ref. Rider tient compte des modifications et vous aide à trouver les parties de votre projet qui doivent être mises à jour et annotées avec le nouveau mot-clé scoped pour intégrer ces modifications lors de la migration vers C# 11 ou .NET 7.

Injections de langage

Ce build apporte plusieurs améliorations concernant l'injection de langage :

Nous avons ajouté la prise en charge des injections de langage utilisant les attributs [StringSyntax] (depuis .NET 7) et [LanguageInjection] (de JetBrains.Annotations), et du commentaire d'instruction des injections de langage // lang=<language_name>.

Les injections de langage sont dorénavant possibles dans les chaînes interpolées et les concaténations de chaînes pour tout langage, et plus seulement pour SQL. Veuillez noter que les erreurs de syntaxe sont supprimées lors de l'utilisation de l'interpolation ou de la concaténation de chaînes avec des expressions arbitraires. Les injections de langage dans les chaînes brutes de C#11 sont également prises en charge.

Un guide d'indentation séparant l'indentation de la valeur réelle s'affiche désormais sur les littéraux de chaînes brutes.

Mises à jour C# générales

Icône de gouttière Global imports

Icône de gouttière Global imports

Nous avons ajouté une nouvelle icône dans la gouttière pour prévenir les utilisateurs lors des importations d'espaces de nom implicites dans les fichiers C# et Razor.

En appuyant sur Alt+Entrée sur la ligne correspondante, vous pouvez observer la liste complète d'importations implicites et d'informations sur le fichier source où sont situées les directives global using. Si vous sélectionnez un nom d'espace importé spécifique, Rider peut vous amener jusqu'à sa déclaration, y compris pour les balises <Using Include="Some.NameSpace" /> dans le fichier de projet .csproj.

Icône de gouttière Global imports

Rider présente également les importations générales depuis _Imports.razor et permet de naviguer jusqu'aux définitions d'importation correspondantes.

Saisie semi-automatique du code assistée par machine learning pour C#

Saisie semi-automatique du code assistée par machine learning pour C#

Afin de vous aider à simplifier et à accélérer votre processus de développement, nous avons introduit le tri d'éléments assisté par machine learning pour les options de saisie semi-automatique de code dans C#.

Pour une utilisation optimale de cette fonctionnalité, vous pouvez activer deux options dans la section Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion :

  • Mark position changes in the completion popup
  • Mark the most relevant item in completion popup
Saisie semi-automatique pour la chaîne de format

Saisie semi-automatique du code pour la chaîne de format

Suite à l'ajout des types numériques Int128 et UInt128 dans .NET 7, nous avons mis jour les suggestions de spécification de format de saisie semi-automatique.

Nous avons également ajouté la prise en charge des types date/heure DateOnly et TimeOnly de .NET 6, ainsi que celle du type numérique à virgule flottante de demi-précision Half introduit dans .NET 5.

Conversion de schémas simples en expressions

Conversion de schémas simples en expressions

Parfois, après la refactorisation, les expressions de correspondance de modèles peuvent se transformer en modèles récursifs simples. À ce stade, il n'est pas forcément nécessaire d'utiliser la syntaxe de schéma récursif, c'est pourquoi Rider fournit une action qui permet de réécrire les schémas sous forme d'expressions plus simples, tout en préservant la sémantique de correspondance des schémas d'origine.

Suggestions de saisie semi-automatique du code pour une expression void

Suggestions de saisie semi-automatique du code pour une expression void

Lorsque vous reprenez la saisie après un appel, il arrive que vous ne voyiez quasiment aucune suggestion pertinente. Cela peut se produire si l'appel n'a produit aucune valeur car une méthode renvoyant void a été appelée. Généralement, il faut plusieurs actions de l'IDE pour que cela se produise (revenir en arrière et accéder à la déclaration de méthode, ou survoler l'appel). Dans cette version, nous avons introduit l'élément de conseil void pour ces types d'appels de retour void afin de vous fournir un retour immédiat sur le type résultant de l'appel. L'acceptation de cet élément void ajoute un point-virgule après l'appel s'il n'y en a pas.

Développement Web

Blazor

Blazor

Rider 2022.3 introduit Hot Reload pour les applications Blazor Server. Lorsque vous modifiez le code source dans votre application Blazor Server alors que celle-ci est en cours d'exécution, Rider vous demande si vous souhaitez appliquer cette modification à l'application en cours d'exécution sans la redémarrer. Référez-vous à la barre de notifications jaune Sources are modified en haut de l'éditeur de texte. Si vous acceptez la modification, votre application sera mise à jour à la volée et vous pourrez poursuivre votre travail avec l'application actualisée.

Écran d'accueil

Internet Information Services (IIS)

Pour répondre à une demande récurrente de notre communauté, nous avons ajouté la nouvelle configuration d'exécution IIS Application afin d'exécuter et de déboguer les applications ASP.NET classiques sur un serveur IIS. Nous avons également introduit la prise en charge du nom de commande IIS depuis le fichier launchSettings.json pour les applications ASP.NET Core.

Points de terminaison

Points de terminaison

Nous continuons à améliorer la prise en charge d'Endpoints et d'Endpoints Viewer. La visionneuse peut maintenant reconnaître et collecter les points de terminaison pour les groupes de routage d'API minimale ASP.NET Core 7. Ainsi, en plus des fonctionnalités qui étaient déjà disponibles, vous pouvez aussi rechercher, parcourir et utiliser la saisie semi-automatique intelligente du code sur les points de terminaison déclarés avec l'API MapGroup().

Action .NET User Secrets

Action .NET User Secrets

L'action .NET User Secrets a été ajoutée pour les projets ASP.NET.

Projets web JavaScript/TypeScript

Projets web JavaScript/TypeScript

Dorénavant, Rider génère automatiquement une configuration d'exécution npm pour les projets web JavaScript et TypeScript (.esproj) référencés par la solution (.sln).

Code Vision pour JavaScript et TypeScript

Code Vision pour JavaScript et TypeScript

Les conseils d'insertion de Code Vision fonctionnent désormais aussi pour JavaScript et TypeScript. Ils facilitent le suivi des utilisations de différentes classes, méthodes, alias de type et interfaces dans votre code.

Prise en charge de CSS

Prise en charge de CSS

L'IDE comprend désormais la règle « at » @supports, qui associe un bloc d'instructions à une condition @supports. This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.

Mises à jour pour Angular

Mises à jour pour Angular

Nous avons ajouté la prise en charge de la réduction (narrowing) des types dans les modèles Angular, ce qui permet d'obtenir des informations plus précises sur les types et de meilleures suggestions de saisie semi-automatique du code.

En outre, Rider exclut désormais le dossier cache .angular des recherches globales afin de fournir de meilleurs résultats de recherche.

Développement de jeux

Prise en charge de Unity

La prise en charge de Unity par Rider a fait l'objet d'une nouvelle mise à jour très intéressante, avec de nouvelles fonctionnalités, des améliorations des fonctionnalités existantes et plusieurs correctifs.

Nous avons ajouté la prise en charge du nouveau package Input System de Unity. Rider sait reconnaître les méthodes utilisées en tant que gestionnaires d'événements pour les entrées et ne les présente plus comme non utilisées. Find Usages fonctionne également sur ces méthodes et montre où elles sont utilisées dans le code ou dans le fichier .inputactions.

Lorsque vous chargez les ressources de jeu lors de l'exécution, Rider vous permet désormais de vous assurer que vous utilisez le bon chemin dans les méthodes Resources.Load. Il vous fait des suggestions de saisie semi-automatique du code au fur et à mesure de votre saisie et met en évidence les ressources inconnues avec un avertissement.

Rider fournit la saisie semi-automatique du code et la vérification des noms de balise depuis plusieurs versions déjà, mais la version 2022.3 ajoute la prise en charge du groupe de méthodes GameObject.FindWithTag. Les suggestions apparaissent au cours de la saisie et vous recevez un avertissement si vous tentez d'utiliser une balise qui n'existe pas dans le projet.

Dans les projets Unity, il est très important de veiller à la synchronisation des fichiers Meta avec les fichiers et les dossiers. Rider 2022.3 vous avertit si vous tentez de valider un métafichier pour un dossier vide dans le contrôle de code source. Encore plus utile, si l'éditeur Unity est ouvert, Rider vous prévient s'il reste des scènes ou des composants non sauvegardés pour vous éviter de passer à côté d'une modification lorsque vous effectuez un commit.

Nous avons aussi apporté une multitude de petites améliorations et de correctifs mineurs. Nous avons réduit le temps de chargement des projets particulièrement volumineux, ajouté une notification qui s'affiche si vous tentez de modifier un fichier de package en lecture seule, et amélioré Find Usages afin que vous puissiez l'utiliser pour des méthodes dans des prefabs imbriqués et des tableaux de gestionnaires d'événements.

Dans la prise en charge de DOTS, Rider est maintenant capable de ne pas marquer les classes implémentant IBaker ou IAspect comme non utilisées.

Vous pouvez désactiver les inspections de nommage pour les champs sérialisés et les traiter comme des champs normaux et les vers la documentation en ligne dirigent désormais vers les bons emplacements.

Nous tenons à remercier Unity d'avoir fourni un correctif pour faciliter le débogage des joueurs pour Nintendo Switch.

Prise en charge d'Unreal Engine

Rename avec CoreRedirects

Rider permet déjà d'ajouter des CoreRedirects lors du renommage de classes ou de propriétés Unreal via la refactorisation Rename. Dorénavant, cela fonctionne aussi pour renommer :

  • UFUNCTION()
  • USTRUCT()
  • UENUM

Rider suggère désormais d'ajouter des CoreRedirects lorsque vous effectuez la refactorisation Rename dans ces cas.

Si vous acceptez, le fichier .ini correspondant sera mis à jour automatiquement.

Il est désormais beaucoup moins probable que des erreurs se glissent dans votre jeu lors du renommage !

Code Vision a été mis à jour pour les Blueprints

Rider 2022.3 apporte une nouvelle métrique Code Vision pour les Blueprints. Vous pouvez maintenant vérifier rapidement le nombre de Blueprints qui utilisent la fonction BlueprintCallable et obtenir une liste de toutes les utilisations à partir du menu contextuel de Code Vision.

Génération d'interface utilisateur graphique

L'outil Generate GUID prend désormais en charge le format d'interface utilisateur graphique d'Unreal Engine. Lorsque vous devez rapidement générer une interface utilisateur graphique, choisissez simplement Tools | Generate GUID... dans le menu et le format hexadécimal préféré sera pré-sélectionné.

Importation automatique

L'importation automatique de la fonctionnalité de saisie semi-automatique peut vous faire gagner un temps considérable. Mais si elle ajoute une directive #include incorrecte, ce problème risque d'être difficile à détecter. Nous avons travaillé dur pour améliorer cette fonctionnalité et nous assurer qu'elle ne suggère pas des entités indésirables à partir des en-têtes système de l'importation automatique. Par défaut, les en-têtes système ne sont pas suggérés. Pour qu'elles le soient, vous pouvez les activer dans la section Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine.

Journal UnrealBuildTool

Nous avons amélioré la présentation des journaux UnrealBuildTool. Afin de ne plus manquer aucun avertissement ou aucune erreur concernant les configurations de projets, la fenêtre du journal inclut désormais un horodatage et conserve des journaux des exécutions précédentes de UnrealBuildTool.

Prise en charge native de .uproject

Pour les projets basés sur Unreal Engine, Rider fonctionne à la fois avec les projets .sln et .uproject. Nous poursuivons l'amélioration de la prise en charge du modèle .uproject nati :

  • Rider 2022.3 respecte les emplacements source supplémentaires qui sont spécifiés dans .project, plus précisément AdditionalRootDirectories et AdditionalPluginDirectories.
  • Il prend également en charge les programmes personnalisés dans les emplacements du jeu et génère correctement tous les fichiers de projet du programme.
  • Rider prend maintenant en charge les modules avec plusieurs fichiers .Build.cs pour les modules spécifiques à la plateforme.
  • La saisie semi-automatique et les inspections dans les fichiers .uplugin et .uproject sont désormais pris en charge lors de l'utilisation du modèle de projet .uproject.
  • Les configurations d'exécution sont dorénavant générées automatiquement pour les programmes C++ lorsque le modèle .uproject est utilisé.

Attach to Unreal Editor

Nous avons implémenté une action Attach to Unreal Editor pour les projets Unreal Engine. Elle permet d'attacher rapidement un processus Unreal Engine à un débogueur sans avoir à rechercher manuellement. Actuellement, vous pouvez seulement attacher processus auquel UnrealLink est connecté. Le projet qui s'exécute dans Unreal Editor doit donc correspondre à celui sur lequel vous travaillez dans Rider. Nous travaillons sur l'amélioration de ce workflow pour les futures versions.

Prise en charge d'ARM64 Version préliminaire

Version préliminaire de la prise en charge d'ARM64

Rider 2022.3 peut désormais s'exécuter sous Windows et Linux ARM64. Tous les workflows de développement basiques sont pris en charge, ce qui inclut l'exécution et le débogage de vos applications .NET et l'exécution de tests unitaires. Nous poursuivons notre travail et effectuons des tests pour nous assurer que Rider fonctionne correctement avec les processeurs ARM64, mais il y a encore quelques limitations :

  • Il n'est pour le moment pas prévu de prendre en charge le développement d'Unreal Engine sous Windows ARM64 car Epic Games ne prend pas en charge Unreal Engine pour cette architecture.
  • La prise en charge d'Unreal Engine pour Linux ARM64 est toujours en cours de développement.
  • La prise en charge basique est disponible pour les projets Visual C++ sous Windows ARM64, mais elle ne couvre toujours pas le débogage des applications développées de façon native. Vous pouvez suivre la progression sur ce point ici.

Plugins

Profilage de mémoire sous macOS et Linux dotUltimate

En plus de Windows, dotMemory est désormais disponible pour JetBrains Rider sous Linux et macOS. Deux nouveaux modes de profilage sont disponibles dans le widget Run et dans le menu via Run | Switch profiler configuration : Memory (sampled allocations) et Memory (full allocations). Vous trouverez plus d'informations sur les différences entre ces modes dans l'aide de dotMemory.

Vous pouvez attacher le profileur à un processus en cours d'exécution depuis le menu Run et voir le graphique Timeline Graph se déployer en temps réel. Sélectionnez un intervalle pour ouvrir la vue Memory Allocations, qui est identique à celle de la version de dotMemory Standalone. Cette vue vous permet d'analyser les objets alloués et les arborescences d'appels d'allocation pour une période donnée.

Malheureusement, il n'est pas encore possible de collecter des instantanés de mémoire dans cette version.

Dynamic Program Analysis

Dynamic Program Analysis

L'analyse de programme dynamique (DPA - Dynamic Program Analysis) comporte de nouvelles inspections qui permettent d'identifier différents problèmes en relation avec l'utilisation de la base de données, plus précisément :

  • Durée d'exécution des commandes trop longue
  • Nombre trop élevé de connexions à la base de données
  • Nombre trop élevé de commandes de base de données exécutées simultanément
  • Commandes renvoyant un nombre trop élevé d'enregistrements

Les nouvelles inspections sont disponibles pour toutes les applications qui utilisent Entity Framework Core et un fournisseur de données .NET pour SQL Server.

dotCover dotUltimate

Dynamic Program Analysis

Navigation vers les tests facilitée

Nous avons ajouté l'action Show Covering Tests dans les menus contextuels dotCover dans l'éditeur de code et dans la fenêtre Unit Test Coverage. Cette action affiche une fenêtre contextuelle centralisant l'ensemble des tests de couverture. Cette fenêtre contextuelle permet également de créer une nouvelle session de couverture.

Processus Shadow copy plus rapide

Désormais, dotCover copie uniquement les assemblies et les fichiers de symbole requis pour les tests continus dans JetBrains Rider. Cela améliore les performances générales de dotCover, notamment pour les grands projets, car il n'est plus nécessaire de copier l'intégralité du répertoire de travail. Si besoin, vous pouvez régler le filtre du fichier d'instantanés dans les paramètres de dotCover.

Amélioration de la prise en charge de Unity

Auparavant, pour analyser la couverture des tests Unity, vous deviez redémarrer Unity avec la prise en charge de la couverture activée. À partir de cette version, le redémarrage de Unity n'est plus nécessaire et la couverture des tests est assurée directement.

Prise en charge de NuGet

La Gestion centralisée des packages (également connue en tant que fichier Directory.Packages.props) est une fonctionnalité évolutive de la pile technologique .NET qui, au fur et à mesure de son amélioration, devrait simplifier la gestion des solutions. Avec l'ajout de la gestion centralisée des packages dans Rider, les développeurs devraient avoir plus de contrôle sur leurs dépendances.

Vous trouverez plus d'informations sur la Gestion centralisée des packages, dont des astuces et conseils, dans cet article de blog.

Chaque fois que vous utilisez des packages NuGet open source dans vos solutions, il y a un risque d’exposer votre projet à des vulnérabilités de sécurité. Afin d’atténuer ce risque, nous avons introduit la détection des dépendances vulnérables dans Rider. Rider vous signalera les dépendances vulnérables associées à l'utilisation de packages NuGet via les fenêtres contextuelles de notifications, que vous pourrez examiner plus en détail dans la section Security de la vue Problems. Les informations sur les dépendances vulnérables associées aux packages inclus dans la solution peuvent également être consultées dans la fenêtre NuGet Package Management en sélectionnant un package spécifique.

Nous avons également amélioré le défilement dans la liste Packages de la fenêtre d'outils NuGet.

Prise en charge de F#

Rider 2022.3 apporte la prise en charge de F# 7, ainsi que des correctifs pour plusieurs problèmes mineurs et des améliorations de l'expérience utilisateur.

Meilleure prise en charge de la documentation XML

Meilleure prise en charge de la documentation XML

La saisie < dans un commentaire ajoute désormais un modèle de documentation. De plus, la mise en évidence des éléments de syntaxe et la saisie semi-automatique du code facilitent considérablement la modification des commentaires de documentation.

Saisie semi-automatique du code pour les records

Saisie semi-automatique du code pour les records

Une nouvelle règle de saisie semi-automatique du code simplifie la saisie des expressions record, car elle met en évidence les champs de type record inférés, masque ceux qui sont déjà utilisés et corrige divers cas pour lesquels il n'y avait pas de suggestions auparavant.

Fichiers de signature

Fichiers de signature

Nous avons ajouté de nouveaux correctifs rapides, Update parameter name et Update record field, qui mettent à jour les fichiers de signature, ce qui facilite leur utilisation lors de la modification du code. A huge thanks goes to Florian Verdonck for implementing them!

Nous avons vu ici les principales améliorations de la prise en charge de F#. You can find the full list of F# features included in the 2022.3 release here.

Prise en charge des bases de données

Voici les principales nouvelles fonctionnalités de Rider 2022.3 pour le travail avec les bases de données :

  • Filtre rapide : filtrez les résultats et masquez les objets non concordants lors de l'utilisation de la recherche rapide.
  • Filtrage des schémas en fonction de modèles : vous pouvez maintenant choisir les bases de données ou les schémas à utiliser pour l'introspection sur la base de modèles d'expressions régulières.
  • Mise en forme des champs date/heure : vous pouvez personnaliser l'affichage des champs de type date et heure dans l'éditeur de données.
  • Modifications multiples dans la fenêtre Modify : vous pouvez maintenant modifier plusieurs objets à la fois.

Pour en savoir plus, consultez la page Nouveautés de DataGrip 2022.3

Autres améliorations

IL Viewer

IL Viewer

La fenêtre d’outil IL Viewer de Rider est désormais capable de décompiler le code en différents niveaux de constructions du langage C#. Deux niveaux de C# sont disponibles : le niveau supérieur, avec certaines constructions syntaxiques simplifiées à l’aide des dernières fonctionnalités du langage, et le niveau inférieur pour les cas où vous souhaitez connaître l’état brut de ces constructions syntaxiques.

Mise en évidence du code

Mise en évidence du code

La mise en évidence du code et le soulignement ondulé ont été remaniés dans Rider 2022.3. En raison d'une différence de logique interne, Rider créait un conflit avec les analyseurs de style de code de Microsoft Roslyn, ce qui entraînait des chevauchements des zones sélectionnées, l'affichage de la même sélection à des endroits différents ou le doublement de lignes ondulées. Les différences de logique derrière la majorité de ces instances a maintenant été résolue, et pour les rares exceptions qui subsistent, les messages d'erreurs sont accompagnés de suggestions claires sur la façon de résoudre le problème.

En outre, Rider affiche désormais les informations Roslyn Analyzer ID et URL Reference dans l'infobulle Quick Documentation pour les inspections produites par les analyseurs Roslyn.

Formatage C++

Formatage C++

Nous avons implémenté une option permettant d'exécuter directement un binaire au format clang sans passer par le moteur de formatage de Rider, ce qui garantit une compatibilité totale avec l'outil de formatage standard, ainsi que de meilleures performances et un plus large gamme d'options de formatage. Vous pouvez alterner entre les options intégrées et externes du format clang en allant dans la section Settings | Editor | Code Style | C++ et en sélectionnant Clang-format.

Débogueur

Nous avons radicalement amélioré les performances du débogueur, y compris lorsque l'option Allow property evaluations and other implicit function calls est désactivée. Désormais, le mode sans effet secondaire permet d'évaluer beaucoup plus d'expressions dans les projets .NET, .NET Framework et .NET Core.

Tests unitaires

Nous avons rendu l'arborescence de l'explorateur de tests unitaires « lazy », ce qui augmente sa vitesse et réduit son niveau d'utilisation de la mémoire. Auparavant, tous les nœuds étaient créés automatiquement en même temps que l'arborescence de tests unitaire, s ce qui causait un décalage lors de la navigation et consommait trop de mémoire. Dorénavant, seuls les nœuds appartenant aux sections développées de l'arborescence seront créés, ce qui améliore grandement la performance.

MSBuild

  • Nous avons activé le nettoyage par défaut de la mémoire du serveur pour les MSBuilds 17+ de .NET Core.
  • Rider peut désormais détecter si la version 32 bits de MSBuild est à court de mémoire et passer à la version 64 bits de Visual Studio.

Performances

Solution Wide Analysis et la commande Find usages ont été refactorisés. Selon les tests internes, elles sont en moyenne de 20 à 40 % plus rapides qu'avant.