Nouveautés de Rider

Rider 2020.1 exécute désormais par défaut le backend sur l'environnement d'exécution .NET Core sous macOS et Linux, et propose les fonctionnalités Xamarin Hot Reload et Dynamic Program Analysis. Il inaugure un moyen simple de configurer les degrés de gravité de l'éditeur et se dote d'une analyse du flux de données pour les valeurs entières, sans parler de l'accélération de l'une exécution du code. La fenêtre Debug a été remaniée, et la refactorisation Extract Class et les filtres Coverage Filters sont désormais disponibles.

Le backend se lance sur l'environnement d'exécution .NET Core sous macOS et Linux

Le backend se lance sur l'environnement d'exécution .NET Core

Saluez l'arrivée de l'édition Rider .NET Core ! Le backend se lance enfin sur l'environnement d'exécution .NET Core par défaut sous macOS et Linux, au lieu d'utiliser l'environnement d'exécution Mono. Vous remarquerez instantanément :

  • Amélioration des performances.
  • Une empreinte mémoire réduite.
  • La restauration NuGet est désormais multithread (et non monothread comme sur Mono). Cela signifie qu'elle est 4 fois plus rapide si vous avez un processeur avec 4 cœurs logiques, 8 fois plus rapide si vous avez un processeur avec 8 cœurs logiques… enfin vous avez compris.
  • Et l'abolition de nombreuses autres limitations de Mono.

Soit dit en passant, la version actuelle de .NET Core est la plus récente et la meilleure, la 3.1, qui présente de nombreuses améliorations de performances par rapport à la version 3.0

Veuillez noter qu'il n'y a pas de prise en charge sous Windows pour l'instant, seulement sous macOS et Linux. Nous prévoyons d'apporter la prise en charge sous Windows plus tard dans l'année.

Voulez-vous en savoir plus sur la transition de Mono vers .NET Core et consulter les graphiques des performances ? Consultez cet article du blog

Si vous rencontrez des problèmes avec le backend Rider exécuté sur .NET Core et que vous souhaitez revenir à l'environnement d'exécution Mono, sélectionnez Help | Switch IDE runtime to Mono. Et en cas de problème, n'oubliez pas de nous le signaler.

Xamarin Hot Reload

Xamarin Hot Reload

La prise en charge initiale de Xamarin Hot Reload est arrivée Maintenant, Rider applique automatiquement les modifications apportées dans le XAML de Xamarin Forms à l'application en cours de débogage sur un appareil ou un simulateur, sans relancer la build ni redéployer l'application entière.

Notez bien cette limitation : si un PC/ordinateur portable avec Rider et un appareil iOS ne sont pas sur le même réseau WiFi, le rechargement à chaud ne fonctionnera pas, même si l'appareil iOS est connecté au PC ou à l'ordinateur portable en USB.

En dehors de cela, la prise en charge de Xamarin bénéficie d'un correctif important : l'erreur « Invalid target architecture 'arm64e' » n'apparaît plus lors de l'exécution de projets Xamarin.iOS sur un appareil iPhone XS Max.

Consultez l'article de blog pour plus d'actualités.

Dynamic Program Analysis (DPA)

Dynamic Program Analysis (DPA) Windows uniquement

Nous sommes heureux de vous présenter l'analyse dynamique de programme Dynamic Program Analysis. Chaque fois que vous exécutez votre projet dans Rider, DPA commence à collecter les données d'allocation de mémoire. Une fois que vous fermez l'application, DPA vous montrera une liste des problèmes détectés : fermetures et allocations à des tas d'objets, petits et grands. Le grand intérêt de cette amélioration est que vous n'avez pas besoin de démarrer de « sessions de profilage » et d'obtenir des instantanés. Travaillez comme d'habitude et toutes les données seront collectées en arrière-plan, avec une surconsommation presque nulle. Le test de la DPA sur une variété de solutions réelles a démontré un ralentissement de seulement 0 à 2 %.

Notez bien : DPA n'est disponible que sous Windows, et vous n'avez pas besoin d'une licence spéciale pour l'activer.

Pour en savoir plus : Détection automatique des problèmes de mémoire dans votre application avec Dynamic Program Analysis

Analyse du flux de données des valeurs entières

Analyse du flux de données des valeurs entières

Cette version de Rider inaugure un nouveau type d'analyse de code pour suivre l'utilisation des valeurs entières dans votre application. Ce nouveau type d'analyse suit la variation des valeurs de toutes les variables int locales, et vérifie l'exactitude de toutes les opérations courantes sur ces variables pour détecter d'éventuels morceaux de code inutiles ou erronés. Plus précisément, il vous avertit des problèmes suivants :

  • Opérateurs relationnels/d'égalité donnant toujours des résultats true ou false.
  • Cas de switch heuristiquement inaccessibles vérifiant les valeurs int.
  • Opérations arithmétiques dénuées de sens, telles que multiplication par 1, addition de 0, etc.
  • Débordements int possibles.
  • Division possible par 0.

Pour améliorer la précision de l'analyse, nous avons également ajouté deux nouveaux attributs JetBrains.Annotations à utiliser avec les membres de type et les paramètres de type int : [NonNegativeValue] et [ValueRange(from, to)] . Ces attributs indiquent comment les valeurs de membres int donnés peuvent varier pendant l'exécution.

Prise en charge d'Unity

Prise en charge d'Unity

  • Nous avons considérablement amélioré l'utilisation de la mémoire et la vitesse d'indexation des ressources. Rider indexera désormais l'intégralité de votre code avant d'examiner vos ressources, ce qui signifie que toutes les fonctionnalités de productivité, telles que la saisie semi-automatique, la mise en évidence du code et les inspections, sont disponibles pour une utilisation plus rapide qu'auparavant. L'indexation des ressources se poursuit après le chargement de la solution, pendant que vous continuez à travailler, et Rider trouve les utilisations et renomme même les ressources internes une fois l'indexation terminée. Bien sûr, une fois tout cela terminé, l'index fait l'objet d'une mise à jour incrémentale, qui ne concerne que les fichiers nouvellement modifiés.
  • L'indexation des ressources est désormais également plus intelligente. Il comprend les usages de votre code dans les préfabriqués Nested et Variant, et il affiche les usages pour les objets ScriptableObjects et les valeurs des champs sérialisés.
  • La découverte des tests unitaires fonctionne désormais mieux avec les projets Unity. Rider trouve automatiquement tous les tests des modes Edit et Play dans votre projet.
  • Nous avons ajouté une nouvelle inspection de performances, « Prefer jagged arrays to multidimensional arrays », qui fait preuve de meilleures performances dans les chemins d'accès à chaud. Il s'agit d'une micro-optimisation, elle n'est donc suggérée que dans des contextes critiques pour les performances, tels que la méthode Update ou tout autre élément appelé depuis Update.
  • Rider ne proposera plus Boo.Lang.List ou System.Diagnostics.Debug dans la saisie semi-automatique du code pour les projets Unity.
  • Nous avons modifié l'ordre des fonctions d'événement dans la boîte de dialogue Generate pour placer les méthodes les plus importantes en premier. Et lors de la génération de fonctions à partir du menu Alt+Entrée, elles seront également générées au bon endroit.
  • Pour plus de mises à jour et de correctifs, veuillez consulter le dépôt GitHub.
Prise en charge de C#

Prise en charge de C#

Nous continuons à renforcer la prise en charge des fonctionnalités du langage C# 8. En coulisses, nous avons beaucoup refactorisé notre prise en charge du langage C# pour préparer l'analyse de code et d'autres fonctionnalités, telles que les refactorisations et ReSharper Build, pour prendre en charge les types de référence nullables (NRT). Dans Rider 2020.1, l'analyse de code signale les avertissements de compilation liés aux types de référence nullables et propose des correctifs rapides pour la plupart d'entre eux.

Il existe également plusieurs nouvelles inspections et correctifs rapides :

  • Détecter les contraintes redondantes sur les paramètres de types par rapport aux types de référence nullables.
  • Pour détecter et utiliser les surcharges async des méthodes lorsqu'elles sont disponibles au lieu des surcharges sync.
  • Pour utiliser l'expression nameof au lieu d'utiliser la construction typeof(SomeType).Name pour obtenir le nom du type actuel.
Saisie automatique du code

Saisie automatique du code

Au cours de l'année écoulée, nous avons reçu quelques rapports indiquant que la fenêtre contextuelle de saisie semi-automatique du code mettait trop de temps s'afficher. Nous avons planché sur la question, et la fenêtre contextuelle de saisie semi-automatique du code s'affiche maintenant beaucoup plus vite après que vous avez commencé à taper, en particulier dans les grandes solutions.

Autre fonctionnalité très pratique inclus dans cette version : les membres signalés comme Obsolete peuvent être masqués dans la saisie semi-automatique du code si vous ne voulez pas les y voir affichés.

Dernier point, mais non des moindres, les propositions de la fenêtre contextuelle de saisie semi-automatique du code respectent désormais vos paramètres de style de code.

Remaniement de la fenêtre Debug

Remaniement de la fenêtre Debug

Nous avons complètement remanié l'interface utilisateur de la fenêtre d'outil Debug pour la rendre aussi propre et épurée que possible. Si une seule session de débogage est en cours d'exécution, la disposition des onglets est simplifiée, car tous les onglets se retrouvent désormais sur un seul niveau. Les légendes des onglets prennent moins de place, il y a donc plus de place pour le contenu du débogueur. Et dans le cas de plusieurs sessions, une couche d'onglets supplémentaire est ajoutée pour séparer les sessions.

Dans le même temps, nous avons combiné les vues Threads et Frames. Si vous n'avez pas besoin de la vue Threads pour le moment, vous pouvez la masquer en cliquant sur l'icône Hide threads view.

Mises à jour du moteur de débogage

Mises à jour du moteur de débogage

Nous avons également mis à jour le moteur de débogage pour améliorer encore votre expérience de débogage :

  • Vous pouvez maintenant vous détacher d'un processus démarré initialement sous le débogueur sans arrêter l'application.
  • Smart Step Into est activé par défaut pour l'action Step Into (Preferences/Settings | Build, Execution, Deployment | Debugger | Stepping | .NET Languages | Always do Smart Step Into).
  • Le débogueur prend en charge l'environnement d'exécution .NET Core x86.
  • Le nom du thread s'affiche désormais dans la ligne d'exécution pour vous aider à comprendre où en est actuellement l'exécution de l'application.
  • Vous pouvez accéder directement au curseur avec Skip to Here/Cursor après avoir arrêté la session de débogage sur une exception.
  • Vous avez maintenant plus de contrôle sur la fenêtre Debug Output et pouvez désactiver les messages de service dans la sortie de débogage Debug Output.
Un moyen facile de configurer les degrés de gravité de l'éditeur

Un moyen facile de configurer les degrés de gravité de l'éditeur

Cette nouvelle fonctionnalité vous permet de modifier facilement les niveaux de mise en évidence de l'éditeur. En un seul clic dans une fenêtre contextuelle non modale, vous pouvez activer ou désactiver Code Vision, Parameter Hints, Unity Performance Hints, Errors, Warnings, Suggestions, Context actions, et bien d'autres éléments. Recherchez l'icône de crayons en bas à droite de l'onglet de l'éditeur de code.

Mises à jour des tests unitaires

Mises à jour des tests unitaires

Nous avons modifié les barres d'outils des fenêtres Unit Test Session et Unit Test Explorer.

  • Plusieurs icônes sont passées de la barre d'outils de gauche à celle du haut.
  • Il est maintenant possible de filtrer l'arborescence des tests unitaires avec la recherche de texte, en utilisant la nouvelle zone de texte dans la barre d'outils du haut.
  • Les états « Failed », « Aborted », et « Inconclusive » ont été fusionnés par défaut en un seul et même état « Broken ». Si vous préférez les séparer, cliquez sur l'icône d'engrenage dans la barre d'outils supérieure.

En plus de cela, nous avons ajouté trois grandes fonctionnalités :

  • Vous pouvez utiliser la nouvelle fonctionnalité avancée Group by dans les fenêtres d'outils Unit Test Explorer et Unit Test Session pour créer un regroupement personnalisé. Avec l'élément Duration ajouté, il est désormais possible de regrouper les tests unitaires en fonction du temps nécessaire à leur exécution.
  • Vous pouvez filtrer les tests unitaires en fonction du framework cible dans la fenêtre d'outils Unit Test Session, au cas où vous en avez plusieurs (ce qui est assez courant de nos jours), et que vous ne souhaitez afficher que certains d'entre eux.
  • Vous pouvez exporter et importer n'importe laquelle de vos sessions de tests unitaires. Cela vous permet de les partager avec votre équipe, entre vos ordinateurs ou entre plusieurs branches lorsque vous modifiez quelque chose dans le code et que vous souhaitez exécuter ou couvrir le même ensemble de tests unitaires pour les deux branches. De plus, le fichier exporté est entièrement compatible avec ReSharper, vous pouvez donc partager des sessions de tests unitaires provenant de Rider avec des collègues qui utilisent ReSharper, et vice versa.

Pour en savoir plus : Mises à jour de l'outil d'exécution de tests dans Rider 2020.1

Le client TFS réactif débarque dans RTM

Le client TFS réactif débarque dans RTM

Dans Rider 2019.3, nous avons ajouté un client expérimental TFS qui a fourni une amélioration spectaculaire de la vitesse pour l'action « Checking for changes ». Au cours du cycle de publication actuel, nous avons continué de consacrer beaucoup d'efforts au client. 

Enfin, notre client TFS sort sa première version et apporte de nombreuses améliorations. Mentionnons ici les deux plus importantes. Tout d'abord, l'activation de Version Control Integration fonctionne désormais pour les espaces de travail TFS créés localement avec Visual Studio. Cela signifie que vous n'avez plus besoin de recréer un espace de travail local à partir de zéro dans Rider. Deuxièmement, nous avons considérablement amélioré les performances des opérations de suppression et d'annulation.

Pour commencer à utiliser le client TFS, rendez-vous dans Settings | Version Control | TFVC et activez-le.

Mises à jour de l'éditeur de code

Mises à jour de l'éditeur de code

Rider, comme tous les IDE JetBrains, utilise désormais JetBrains Mono comme police par défaut dans tous les thèmes. Nous espérons que vous l'apprécierez !

Une autre fonctionnalité ReSharper qui manquait jusqu'à présent dans Rider est enfin arrivée : les espaces de noms peuvent être importés automatiquement lorsque du code est collé à partir d'un fichier dans la solution.

Si vous modifiez manuellement des fichiers associés à NuGet, vous serez probablement ravi d'obtenir l'aide de Rider, car il offre désormais une prise en charge initiale pour la modification des fichiers NuGet.Config, packages.config, et *.nuspec, avec notamment la saisie semi-automatique du code, la validation de la syntaxe et une fenêtre contextuelle de documentation rapide.

Ces plus petites améliorations méritent également d'être mentionnées :

  • Des séparateurs de méthodes sont désormais disponibles en C# pour séparer visuellement les interfaces, les classes, les méthodes, etc.
  • Les raccourcis Alt+Maj+Flèches haut/bas/droite/gauche exécutent une sélection de blocs de la même manière que dans Visual Studio.
  • Deux paires d'actions, « Move Caret To Code Block Start »/« Move Caret To Code Block End » et « Move Caret To Code Block Start with selection »/« Move Caret To Code Block End with selection », sont désormais pris en charge en C# et suivent le même comportement que dans les autres IDE JetBrains.
  • Les infobulles de documentation s'affichent au survol de la souris pour les symboles de code mis en évidence en tant qu'erreurs.
Refactorisation Extract Class

Refactorisation Extract Class

Une autre refactorisation très demandée et attendue depuis longtemps disponible dans ReSharper est enfin arrivée dans Rider - Extract Class.

Vous vous demandez pourquoi vous en avez besoin ? Supposez que vous ayez une classe qui accomplit une tâche qui devrait plutôt être effectuée par deux classes différentes. L'utilisation de cette refactorisation est le moyen le plus sûr et le plus efficace de décomposer cette classe complexe en deux classes à responsabilité unique. Extract Class vous aidera à choisir les méthodes et les champs pour passer de l'ancienne classe à la nouvelle classe. Elle vous avertit également de toutes les dépendances cassées et des problèmes d'accessibilité, et suggère des moyens de résoudre les conflits.

Vue Solution Explorer

Mises à jour de Solution Explorer

La vue Solution Explorer présente deux nouveaux dossiers utiles qui vous fournissent plus d'informations sur votre projet : Implicit references en tant que sous-dossier du dossier Assemblies et MSBuild import targets.

En plus de cela, il existe plusieurs petites mises à jour :

  • Nous avons ajouté une nouvelle fonctionnalité à la boîte de dialogue Add References, appelée Recent Assemblies.
  • Nous avons introduit un concepteur simple pour les fichiers des paramètres d'application (* .settings).
  • Les propriétés de fichier sont disponibles pour tous les fichiers dans la vue Solution Explorer (dans View | Appearance | Details in Tree Views).
  • La génération de code Resx fonctionne désormais mieux pour les projets .NET Standard sur macOS et Linux.
Mises à jour de couverture du code et du profilage des performances

Mises à jour de couverture du code et du profilage des performances

Pour vous offrir plus de contrôle sur les résultats de couverture des tests unitaires que vous obtenez dans Rider, nous avons ajouté des filtres de couverture. Pour les spécifier, accédez à Preferences/Settings | Build, Execution, Deployment | dotCover | Filtering.

Si vous effectuez le profilage des performances sur Linux ou macOS, nous avons une bonne nouvelle pour vous : les applications .NET Core peuvent enfin être profilées en mode Tracing sur ces systèmes d'exploitation. De plus, vous pouvez désormais associer le profileur aux applications .NET Core sur Linux.

Configurations d'exécution et Build

Configurations d'exécution et Build

  • Nous avons ajouté une action très pratique : Cancel build.
  • Il existe des tâches Build/Clean Project pour toutes les configurations d'exécution. Ces tâches vous permettent de sélectionner les projets à créer ou à nettoyer avant de lancer une configuration d'exécution.
  • La prise en charge de la propriété MSBuild UpToDateCheckInput est désormais disponible. 
  • L'interface utilisateur des configurations d'exécution « Publish to folder » prend désormais en charge les identifiants « ARM » et tous les identifiants « target runtime » personnalisés.
  • Le MSBuild fourni a été mis à jour à 16.5
Décompilateur et IL Viewer

Décompilateur et IL Viewer

Nous avons ajouté plusieurs nouvelles fonctionnalités au décompilateur de Rider et à IL Viewer : 

  • La prise en charge des types de référence nullables (NRT) est disponible dans le décompilateur. Veuillez noter que cela ne fonctionne actuellement que dans les déclarations et pas dans les corps des méthodes.
  • Prise en charge de la décompilation des membres par défaut des interfaces.
  • La prise en charge de la décompilation des noms de composants tuple a été améliorée.
  • La Code Vision de « IL viewer » est désormais disponible dans les fichiers source externes après décompilation.
Prise en charge du contrôle des versions

Prise en charge du contrôle des versions

  • Code Vision est maintenant capable d'afficher l'historique d'une méthode. Cette fonctionnalité est activée par défaut au lieu de VCS Annotate (réglable dans Preferences | Editor | Code Vision | VCS Actions).
  • La fenêtre contextuelle Git Branches obtient un champ de recherche explicite et un bouton Refresh remanié.
  • Des indicateurs de commit entrant (bleu) et sortant (vert) ont été ajoutés à la barre d'état.
  • Consultez la nouvelle boîte de dialogue, « Interactively Rebase from Here ».
  • La fenêtre de l'outil Repositories s'appelle désormais Git, Subversion, Mercurial ou Perforce, selon le VCS que vous utilisez.
  • Les vues Diff et Merge prennent désormais en charge la mise en évidence du code.
  • Si vous n'avez pas Git sur votre machine, Rider vous propose de le télécharger et de l'installer pour vous.
Des bonus sympas pour les développeurs F#

Des bonus sympas pour les développeurs F#

Pour améliorer la prise en charge de F# dans Rider, nous avons apporté des tonnes d'améliorations et de correctifs qui devraient vous aider dans votre routine quotidienne :

  • L'action Send project references to F# Interactive est disponible.
  • L'infobulle d'évaluation au survol de la souris fonctionne pour davantage d'expressions lors du débogage : des opérateurs d'autoréférence dans les méthodes et les types (this.Property) et des expressions d'indexeur ("foo".[1]).
  • Un modèle de fichier Type a été ajouté.
  • Les analyseurs de code fonctionnent désormais en parallèle.
  • Plusieurs nouveaux correctifs rapides pour les inspections de code déjà existantes, par exemple le correctif rapide Make field mutable pour l'inspection FS0005: Field not mutable.
  • Quelques nouvelles inspections de code avec les correctifs rapides correspondants, par exemple l'inspection « Redundant Attribute suffix ».
  • Deux nouvelles intentions de code : Elif to If/If to Elif et Negate If expression condition.
  • Code Vision propose une nouvelle action Copy Inferred Type et n'affiche plus les espaces de noms parents pour les types afin de raccourcir les informations affichées.
  • Extend Selection peut sélectionner toute l'expression ().

Pour plus de mises à jour et de correctifs, veuillez consulter le dépôt GitHub.

Développement Web

Développement web

  • De nouvelles intentions pour convertir en chaînage optionnel et/ou en coalescence nulle et pour déduire des paramètres à partir des usages.
  • La fenêtre contextuelle de documentation peut s'afficher au survol de la souris.
  • Prise en charge de Vuex et de l'API Composition.
  • Exécution de la mise en forme Prettier lors de l'enregistrement.
  • Chemins de fichiers complets dans la fenêtre contextuelle Go to.
  • Prise en charge de Yarn 2 pour les projets TypeScript.
  • Pour en savoir plus sur les mises à jour de développement Web, voir Nouveautés de WebStorm 2020.1.
Prise en charge des bases de données

Prise en charge des bases de données

  • Exportation vers Excel.
  • Prise en charge des frameworks de tests utPLSQL et Tsqlt.
  • Affichage des résultats dans l'éditeur de code (désactivé par défaut).
  • Nouvelles options d'authentification.
  • Configuration SSH partagée.
  • Meilleur filtrage des données dans MongoDB.
  • Et de nombreuses autres fonctionnalités liées aux bases de données, telles que décrites dans les Nouveautés de DataGrip 2020.1.
Autres fonctionnalités et améliorations

Autres fonctionnalités et améliorations

  • La prise en charge des projets WIX (Windows Installer XML Toolset) arrive enfin sur Rider ! 
  • Une nouvelle extension qui prend en charge le moteur de jeu Godot est disponible pour Rider 2020.1+. Il est disponible en open source sur GitHub
  • Vous pouvez désormais lancer des recherches dans les paramètres de style de code C#.
  • Rider peut utiliser le même fichier de paramètres (global) à l'échelle de la machine que ReSharper afin de synchroniser les paramètres des deux outils (ajustez ce comportement dans File | Settings | Tools | ReSharper | Synchronize machine-wide Rider and ReSharper settings).
  • La mise en forme du code apporte de nouveaux paramètres qui incluent la virgule de fin pour les styles de code C#. Vous les trouverez sous Preferences | Editor | Code Style | C# | Syntax Style | Trailing comma, et ils sont également compatibles avec l'inspection StyleCop SA1413 (sauf dans un très petit nombre de cas particuliers).
Encore d'autres fonctionnalités

Encore d'autres fonctionnalités

  • Le nouveau mode Zen combine le mode sans distraction et le mode plein écran.
  • Fractionnez la fenêtre d'outil Terminal verticalement ou horizontalement si vous souhaitez exécuter des sessions de terminal côte à côte. Vous pouvez appeler le menu contextuel à partir du Terminal pour créer une session de terminal fractionnée, y naviguer et la fermer.
  • Le Client HTTP bénéficie de nombreuses améliorations. Vous pouvez compléter automatiquement les URL et accéder aux points de terminaison associés directement à partir des fichiers de requête HTTP. Vous pouvez également générer des requêtes HTTP à partir de la vue Endpoints, et le client HTTP complète désormais correctement les variables de chemin d'accès.
  • Un thème IntelliJ Light unifié est désormais disponible pour tous les systèmes d'exploitation.
  • La bordure de la fenêtre supérieure sur Windows 10 a une toute autre allure en mode sans bordure.

Nouveautés d'IntelliJ IDEA 2020.1