Rider 2022.2 apporte une amélioration globale des performances, avec notamment l'accélération du processus de démarrage de l'IDE et l'optimisation du moteur d'analyse de l'ensemble de la solution. La prise en charge de C# 11 a été étendue pour inclure les membres requis, les opérateurs checked définis par l'utilisateur, les chaînes brutes et les modèles de listes. Dans cette version, vous pouvez aussi appliquer les mêmes paramètres de disposition des fenêtres à toutes les solutions sur lesquelles vous travaillez. Nous avons ajouté deux nouvelles actions pour la prise en charge d'Unreal Engine, New Unreal Module et New Unreal Plugin, et il est désormais possible de spécifier des serveurs de symboles afin d'obtenir des symboles de bibliothèque lors du débogage.
Nous avons migré le backend Windows de Rider vers l'environnement d'exécution de .NET 6. Il utilise désormais l'environnement d'exécution .NET 6 pour exécuter le service backend sur tous les systèmes d'exploitation pris en charge : Windows, macOS et Linux. Grâce aux optimisations portant directement sur l'environnement d'exécution .NET 6, les performances globales de Rider ont été améliorées par rapport à la version 2022.1.
Dans la lignée de ce changement, nous avons également remplacé NGen par l'utilitaire CrossGen afin de créer des images natives sous Windows après avoir installé Rider. CrossGen fonctionnant avec l'environnement d'exécution .NET et étant multiplateforme, cela aide à démarrer Rider et à ouvrir les solutions plus rapidement.
Veuillez noter que Rider n'exécute pas CrossGen pendant l'installation, mais uniquement au premier démarrage. Il est donc possible que le premier lancement prenne un peu plus de temps, mais tous les lancements suivants seront plus rapides.
Les solutions s'ouvrent plus rapidement lorsque vous les lancez pour la première fois (« démarrage à froid ») et que Rider n'a aucune information les concernant. Lors du démarrage à froid, tous les projets sont chargés deux fois : d'abord, l'IDE charge les projets pour obtenir les informations sur chacun d'entre eux. « NuGet restore » est ensuite exécuté et, une fois que tout est prêt, les projets sont chargés une seconde fois.
Nous avons optimisé la première phase de chargement des projets afin que Rider extraie uniquement les informations nécessaires pour restaurer les packages NuGet. Nos mesures internes montrent que la nouvelle implémentation est ainsi plus rapide de 40 % environ.
Cette version a été l'occasion d'optimiser l'utilisation de la mémoire de Rider avec Analyse à l'échelle de l'ensemble de la solution en mode ON, aussi bien en termes de trafic de la mémoire (nombre d'allocations de mémoire) que de consommation.
Le moteur d'analyse à l'échelle de toute la solution utilise la mémoire pour stocker la liste de problèmes dans la solution et les informations d'utilisation des types/membres, afin de générer des rapports d'utilisation portant sur l'ensemble de la solution (inspections de code telle que « membre public jamais utilisé »). Les données d'utilisation sont « chaudes », ce qui signifie qu'elles doivent être constamment mises à jour pendant la modification du code, et ne peuvent pas être copiées sur le disque. Si votre solution contient de nombreux types et membres de type, cela risque d'entraîner la consommation d'un volume de mémoire important. Nous avons examiné les données stockées en mémoire et identifié des modèles qui nous permettaient de les dédupliquer/normaliser. Nous avons également utilisé des types de collections spécialisés pour réduire davantage l'utilisation de la mémoire. Ces optimisations ont permis de réduire de 5 à 10 fois la consommation de mémoire et d'accélérer le chargement de l'analyse à l'échelle de la solution.
Cette version fournit la prise en charge de plusieurs fonctionnalités supplémentaires de la version preview de C# 11.
Avec C# 11, les types class
, struct
et record
peuvent maintenant déclarer une liste de membres requis. Il s'agit de la liste de toutes les propriétés et de tous les champs considérés comme requis et qui doivent être initialisés lors de l'initialisation de l'instance d'un type. Ces listes sont automatiquement héritées des types de base et contribuent à offrir une expérience utilisateur fluide et à réduire la quantité de code standard répétitif.
En plus de reconnaître le mot-clé required
pour les membres de type class
, struct
ou record
, Rider assure également la prise en charge du mot-clé « required » :
required
; required
a été ajouté à Modifiers order sur la page Preferences/Settings | Editor | Code Style | C# | Syntax Style
. Nous avons ajouté un nouveau correctif rapide Add initializer for required members pour les cas dans lesquels vous avez créé un objet de type mais n'avez pas encore initialisé les membres. Cela génère automatiquement tous les membres « required » manquants pour votre objet et il ne vous reste plus qu'à remplir les valeurs des membres avec des données pertinentes.
Les opérateurs checked
définis par l'utilisateur aident les développeurs à créer des opérateurs définis par l'utilisateur qui agissent sur les types qui permettent le débordement arithmétique. Rider affiche l'intégralité des erreurs et des avertissements du compilateur. Afin d'assurer une prise en charge complète des opérateurs checked
définis par l'utilisateur, Rider comporte deux inspections supplémentaires et une action contextuelle.
Nous avons mis à jour l'inspection Unchecked/checked context is redundant pour prendre en compte les opérateurs checked
lorsqu'ils sont utilisés dans ce contexte.
Si vous avez un ensemble d'opérateurs définis par l'utilisateur et que certains d'entre eux ont déjà une version checked, Rider vous aide à propager les opérateurs checked aux autres de ces opérateurs. Une nouvelle inspection The operator does not have a matching checked operator while other operators do vous signale les opérateurs qui n'ont pas encore d'opérateur checked
et propose un correctif rapide permettant de générer les versions checked automatiquement.
Si vous n'avez pas encore utilisé les opérateurs checked
dans votre base de code, mais souhaitez commencer à les y ajouter, vous trouverez la nouvelle action contextuelle appelée Create matching checked operator très pratique. Elle est disponible pour tous les opérateurs définis par l'utilisateur et génère la version checked d'un opérateur en un clic, directement depuis le menu contextuel ouvert par Alt+Entrée.
C# 11 améliore la capacité d'intégration d'autres langages ou formats de texte au code C# en introduisant le concept de chaînes « brutes ».
Rider assure une prise en charge basique des chaînes « brutes » incluant les erreurs de compilateur, l'analyse et le surlignage en couleur de la syntaxe """
, les paires de guillemets doubles et les emplacements réservés dans les chaînes interpolées (syntaxe {{...}}
).
C# 11 continue de rendre davantage de modèles disponibles dans le langage. Cette fois, C# permet les opérations d'appariement pour les structures de type liste, comme les tableaux, les chaînes et les collections telles que
List<T>
.
Rider 2022.2 prend intégralement en charge les modèles de listes avec la vérification d'erreurs, la saisie semi-automatique et l'analyse du code. Nous travaillons sur de nouvelles inspections de code qui permettront de suggérer l'utilisation de modèles de listes dans le code existant et des actions de refactorisation supplémentaires.
>>>
), ce qui inclut la prise en charge de la surcharge de l'opérateur >>>
défini par l'utilisateur. Span<char>
en remplacement des instances de chaînes, car C# 11 permet de comparer directement les constantes de chaîne avec des valeurs de type Span<char>
et ReadOnlySpan<char>
. .NET 6 a introduit de nouveaux modèles de projets qui utilisent des instructions C# 9 de niveau supérieur. Les instructions de haut niveau simplifient la déclaration d'une classe Program
ou d'une méthode public static void Main(string[] args)
. Mais parfois il est nécessaire ou préférable d'utiliser une classe de démarrage Program
explicite. Rider 2022.2 fournit une nouvelle action contextuelle To explicit 'Program' class pour effectuer une conversion dans l'ancien style.
Si vous avez déjà une classe de démarrage Program
et souhaitez migrer vers les instructions de haut niveau, utilisez la nouvelle action contextuelle Convert to top-level code.
INotifyPropertyChanged
Dans cette version, nous avons remanié la prise en charge de INotifyPropertyChanged
. Elle ne dépend plus d'annotations externes pour détecter les API INotifyPropertyChanged
couramment utilisées, ce qui permet une prise en charge automatique d'un plus grand nombre de frameworks MVVM et de classes de base INotifyPropertyChanged
. Nous utilisons maintenant la méthode SetField
dont la syntaxe est plus concise pour les notifications INotifyPropertyChanged
.
Dorénavant, il est aussi possible d'ajouter des notifications property change pour l'ensemble des propriétés dans le type ou le fichier.
Pour améliorer l'accessibilité des refactorisations, nous avons identifié les refactorisations les plus utilisées et ajouté au menu disponible via Alt+Entrée des actions contextuelles pertinentes qui s'affichent en fonction du contexte actuel.
Désormais, l'action contextuelle Extract method est également appelée avec Alt+Entrée pour le fragment de code sélectionné.
Les refactorisations Change Signature, Transform Parameters, Convert to extension method et Convert Property To Method sont désormais toutes disponibles en tant qu'actions contextuelles pour les signatures de membres.
nameof
Rider 2022.2 reconnaît les enregistrements de DependencyProperty
dans les projets WPF et suggère l'utilisation d'un opérateur nameof
pour capturer le nom de propriété CLR correspondant. Les modèles dynamiques intégrés ont également été mis à jour pour émettre nameof
à la place de littéraux de chaîne.
Souvent, Rider ne peut pas identifier la signification spéciale d'un littéral de chaîne utilisé dans votre code pour spécifier le nom d'une entité de code comme un nom de membre ou de type. Pour ces cas, nous avons introduit une nouvelle action contextuelle Capture element name pour les littéraux de chaîne avec identifiants, qui permet de faire référence à une entité de code dans le contexte du littéral de chaîne.
Les correctifs rapides provenant des modèles Structural Search And Replace (SSR) peuvent désormais être appliqués au niveau d'un fichier, d'un dossier, d'un projet ou de l'ensemble d'une solution. Cela s'applique aux modèles personnalisés des utilisateurs, aux inspections de code intégrées de Rider et aux correctifs correspondants basés sur les actions SSR.
Rider 2022.2 peut désormais détecter certains modèles d'affectation dans votre code et suggérer du code C# plus idiomatique grâce à la reconnaissance de modèles.
Rider 2022.2 est maintenant capable de remplacer is
dans les expressions ?:
par des modèlesas
plus concis dans les expressions??
, ce qui permet d'éliminer une variable temporaire.
Nous avons implémenté un moyen d'appliquer les mêmes paramètres d'affichage aux fenêtres de toutes les solutions sur lesquelles vous travaillez. Par exemple, si vous déplacez une fenêtre d'outil vers la droite, elle y restera pour toutes vos solutions.
Ce comportement s'appliquera par défaut aux nouveaux utilisateurs de Rider. Vous pouvez aussi l'activer dans le menu principal en sélectionnant Windows | Layout Settings | Use the Same Layout for All Projects
.
Dans cette version, nous avons repensé l'affichage des configurations de solutions. Des projets tels que Unity, Unreal Engine ou Xamarin ont souvent de nombreuses configurations, cibles et plateformes. Auparavant, les combinaisons de toutes ces entités produisaient un nombre considérable d'éléments dans le menu Solution Configurations. À partir de la version 2022.2, vous n'avez plus à parcourir une longue liste d'éléments afin de sélectionner la combinaison exacte de configuration, cible et plateforme. Il vous suffit de cliquer sur chaque type de paramètre un par un, jusqu'à obtenir la combinaison souhaitée.
Afin d'alléger la barre d'outils principale, nous avons déplacé la liste de configurations de solution vers le menu déroulant de l'icône de build (marteau vert). D'après les retours d'expérience et les statistiques que nous avons obtenus, les utilisateurs ne changent pas leurs configurations de solution suffisamment souvent pour justifier la présence d'un widget spécifique sur la barre d'outils. Toutefois, si nécessaire, vous pouvez accéder aux configurations via le triangle déroulant situé à côté de l'icône de marteau vert. Vous y retrouverez la liste habituelle.
Si vous souhaitez replacer les configurations de la solution dans la barre d'outils, il vous suffit de sélectionner l'option Show Configuration on Toolbar dans la liste.
La liste de configurations de solution est disponible sur la barre d'outils lorsque vous travaillez sur des projets Unity, Unreal Engine ou Xamarin, les configurations étant davantage utilisées pour ces types de projets.
En réponse aux attentes de la communauté, nous avons ajouté une option qui permet de modifier la largeur du widget Run/Debug sur la barre d'outils principale. Si la barre d'outils a suffisamment d'espace pour étendre le widget Run/Debug, vous pouvez faire glisser le coin gauche de l'icône de widget et la redimensionner. Cela permet de créer davantage d'espace pour ce widget quand vous vous le souhaitez ou en avez besoin.
Pour macOS, nous avons introduit la possibilité d'organiser votre espace de travail en fusionnant toutes les fenêtres de projet ouvertes en une seule, chaque fenêtre devenant un onglet distinct. Pour effectuer cette action, allez dans Window | Merge All Project Windows.
Nous avons modifié l'affichage de la barre de progression Cloning repository sur l'écran d'accueil de Rider. Elle s'affiche maintenant directement dans la liste Projects pour plus de clarté et de facilité d'utilisation.
Vous pouvez désormais accéder aux paramètres Code Completion Settings et configurer vos préférences directement à partir du bouton du menu (trois points verticaux) dans la fenêtre contextuelle de saisie semi-automatique.
Nous avons introduit une version préliminaire de la prise en charge de l'interface utilisateur d'application multiplateforme .NET (.NET MAUI). Dans cette version, Rider prend en charge les projets qui ciblent les plateformes Android et iOS. Vous pouvez utiliser des configurations d'exécution pour exécuter et déboguer votre projet, ainsi que pour déployer votre application sur un appareil cible. Veuillez noter que macOS, Mac Catalyst, Blazor Hybrid et WinUI ne sont pas encore complètement pris en charge.
Learn more: macOS Environment Setup for MAUI Development
Nous avons implémenté la refactorisation Safe Delete au niveau du projet. Vous pouvez l'appeler avec la clé Delete ou l'action Refactor This sur un projet dans Solution Explorer. Rider recherche ensuite les utilisations du projet sélectionné. Si des utilisations sont trouvées, les conflits seront affichés. Dans le cas contraire, le projet est supprimé et Rider efface toutes les références ou importations restantes. Il est également possible de supprimer un projet sans toutes ces vérifications : décochez simplement l'option Search for usages lorsque la boîte de dialogue Safe Delete s'affiche et Rider n'exécutera plus cette recherche.
Rider 2022.2 facilite considérablement le travail avec des solutions filtrées. Vous avez maintenant la possibilité de filtrer un ou plusieurs projets, un dossier de solution ou même tous les projets d'une solution. Pour ce faire, utilisez l'action Solution Filter | Remove project du menu contextuel d'un projet, d'un dossier de solution ou du nœud racine de la solution dans la vue Solution Explorer. Pour voir les projets qui ont été filtrés, activez le mode Show All Files dans la vue Solution Explorer et utilisez l'action Solution Filter | Add Project dans le menu contextuel.
En plus de ces opérations de base, Rider fournit maintenant deux actions plus avancées : Load Direct Project Dependencies et Load Entire Project Dependency Tree. Avec ces actions, Rider peut vérifier toutes les dépendances du projet cible et charger les projets nécessaires pour que vous puissiez rapidement commencer à travailler sur la solution filtrée.
La fonctionnalité Assembly Explorer permet de mieux présenter les assemblies ReadyToRun (R2R) et NGen :
ngen
ou R2R
s'affichent à côté du nom de chaque assembly. La création d'un nouveau module avec logique de jeu implique entraîne de nombreuses tâches : ajouter un dossier, ajouter un fichier Build.cs
dans ce dossier, créer une classe qui initialise le module, mettre à jour les fichiers .uproject
et Target.cs
, etc. La nouvelle version de Rider comporte une action qui automatise toutes ces tâches : Add | New Unreal Module.
Si vous avez déjà essayé de créer des plugins dans Unreal Editor, cette nouvelle action vous paraîtra familière. Il est désormais possible de créer différents types de plugins directement dans Rider : utilisez simplement l'action Add | New Unreal Plugin pour générer tous les fichiers requis pour le nouveau plugin.
Lors du débogage, les symboles de bibliothèque ne sont pas toujours disponibles sur votre machine locale. Dans ce cas, vous pouvez utiliser un serveur de symboles. Dans la version Windows de Rider, il est désormais possible de configurer le débogueur pour utiliser le serveur de symbole de votre choix.
Rider prend désormais en charge les tests Spec du framework d'automatisation des tests Unreal Engine. Si vous avez un ensemble de tests définis dans la méthode Define
après la macro DEFINE_SPEC
ou les macros BEGIN_DEFINE_SPEC
et END_DEFINE_SPEC
, Rider est capable de les détecter afin que vous puissiez les exécuter et les examiner dans la vue Unit Tests.
Rider comprend maintenant que les appels de fonction de type Emplace
(tels que TArray<..>::Emplace
) impliquent la construction d'objets. Par conséquent, il vous avertit en cas d'arguments non valides passés au constructeur. Vous pouvez voir des conseils sur les noms de paramètres et des informations sur les paramètres pendant que vous saisissez des arguments. Vous pouvez également accéder directement à la définition d'un constructeur depuis un appel Emplace
et inversement.
Mathf
soient utilisées. Nous avons ajouté un indicateur récapitulatif de couverture à l'éditeur. Il peut être utile si vous trouvez le surlignage en rouge et vert généré par le plugin dotCover gênant, car ce nouvel outil est beaucoup plus discret. Recherchez l'icône en forme de bouclier dans le widget Inspections. Sa couleur et son remplissage indiquent le niveau de couverture du code du document actuel. En cliquant sur l'icône, vous pouvez accéder aux instructions qui ne sont pas couvertes.
Rider intègre désormais dotMemory, notre outil de profilage de mémoire. Voici ses fonctionnalités clés :
Veuillez noter que le plugin dotMemory ne permet pas de collecter de snapshots et fonctionne uniquement sous Windows dans la version 2022.2.
Il est désormais possible de générer facilement une table des matières dans les fichiers Markdown sur la base des en-têtes de documents. Cette nouvelle action est disponible à partir des menus contextuels Insert et Generate, que vous pouvez appeler avec le raccourci Alt+Insertion ou en faisant un clic droit. Rider insère une table des matières à l'emplacement du curseur et l'entoure de balises <!-- TOC -->
afin que vous puissiez la modifier ultérieurement en appelant le même menu.
Il n'est plus nécessaire de redémarrer l'éditeur Unity pour lancer le processus de profilage. Le profileur peut désormais s'attacher à des processus Unity en cours d'exécution, ou s'en détacher.
Nous avons activement travaillé à la prise en charge d'Angular 14 dans Rider. L'ajout le plus important apporté dans cette version est la prise en charge des composants Angular autonomes. Rider 2022.2 reconnaît désormais correctement les composants, directives et canaux signalés par standalone: true
.
Rider 2022.2 améliore la prise en charge de Vue 3. Par exemple, il comprend maintenant la réduction de type (narrowing) dans les directives v-if/else
. En outre, la prise en charge de Pinia, la solution de gestion d'état recommandée par l'équipe Vue qui fonctionne comme un référentiel global, a été améliorée. La saisie semi-automatique et la résolution fonctionnent désormais dans Vue avec la bibliothèque Pinia et vous pouvez accéder aux propriétés d'état et aux actions définies dans le référentiel.
Rider 2022.2 est fourni avec TypeScript 4.7 et prend en charge de nouvelles fonctionnalités de langage comme moduleSuffixes
et ESM dans Node.js. Il insère automatiquement l'extension .js
dans l'instruction d'importation si module
est défini sur node16
ou nodenext
dans votre fichier tsconfig.json
. De plus, Rider prend en charge le champ typesVersions
dans les fichiers package.json
.
Pour en savoir plus : Nouveautés de WebStorm 2022.2
Nous avons remanié la fenêtre contextuelle Parameter Info pour F#.
Parameter Info contient des informations sur les arguments attendus par une fonction. La fenêtre contextuelle s'affiche pendant que vous écrivez un appel de fonction ou de méthode, ou vous pouvez appuyer sur Ctrl+P pour voir ces informations pendant que vous lisez votre code.
À partir de la v2022.2, la fenêtre contextuelle Parameter Info prend en charge les appels de currying et met en évidence les surcharges de méthodes correctement. Les descriptions des méthodes, des fonctions et des paramètres, les valeurs par défaut des paramètres, les informations sur les méthodes d'extension et les annotations JetBrains CanBeNull/NotNull
sont également affichées. De plus, vous pouvez voir Parameter Info dans les attributs.
Il est désormais possible d'utiliser indifféremment la version globale ou locale de l'outil dotnet
de Fantomas. Rider utilise automatiquement l'outil approprié, ce qui vous permet de synchroniser la version de Fantomas dans votre équipe.
Le nouveau correctif rapide, Change type of binding, est très pratique lorsqu'un type de retour défini diffère du type réel d'une expression. 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.
Pour en savoir plus : Nouveautés de DataGrip 2022.2