ReSharper 2020.2 apporte de nouvelles inspections et des correctifs rapides pour C#8 et les types de référence Nullable, le très attendu Code Cleanup on Save, un outil d'exécution des tests unitaires remanié, ainsi que des améliorations d'accessibilité. De plus, ReSharper C++ vous permet de passer à un niveau supérieur de développement avec Unreal Engine et s'accompagne de nombreuses améliorations pour la prise en charge, la navigation et l'analyse du code C++/CLI.
Essai gratuit sur 30 jours disponible
L'analyse du code de nullabilité connaît maintenant davantage de cas et peut retracer une nullabilité incorrecte grâce à la déconstruction et au cycle foreach
. Elle fournit également le correctif rapide correspondant.
L'analyse de code prend désormais en compte les attributs JetBrains.Annotations (NotNull
et CanBeNull
) pour l'API, même dans le code où les types de référence nullables sont désactivés (#nullable disable
).
Les actions contextuelles de conversion de foreach
en LINQ et de LINQ en code sont également disponibles sur IAsyncEnumerable<T>
si le paquet NuGet System.Linq.Async
est installé pour votre projet.
Il est maintenant possible de générer facilement des implémentations de IEqualityComparer<T>
and IComparer<T>
avec les correctifs rapides appropriés.
L'analyse de code prend désormais en compte les annotations du compilateur (telles que AllowNull
et DisallowNull
) lors de la vérification de la nullabilité des membres implémentés ou remplacés.
De nouvelles inspections et des correctifs rapides vous permettent de rendre les variables et les types de retour « non nullables » s'ils n'ont jamais contenu ou renvoyé des valeurs nullables.
L'analyse du code est maintenant capable de suivre les règles dotnet_diagnostic du fichier .editorconfig. Spécifiez la sévérité des inspections dans le fichier .editorconfig, par exemple dotnet_diagnostic.CS1058.severity = hint
. ReSharper affichera les inspections en conséquence.
La prise en charge des implémentations par défaut dans la fonctionnalité des interfaces a été améliorée dans cette version. Dans l'éditeur de code, la gouttière de gauche montre qu'une méthode est implémentée ou remplacée, et nos refactorisations et notre navigation tiennent compte de cette fonctionnalité du langage C#.
Les conseils d'insertions sont désormais disponibles dans le code XAML. Nous fournissons des conseils pour les noms de propriétés de balisage et DataContext
, ainsi que pour les marges et les espaces de séparation (padding), ce qui est pratique si vous ne souhaitez pas mémoriser leur ordre.
Le correctif rapide Suppress nullable warning with ! peut être désactivé pour une solution via le menu Alt+Entrée.
Vous pouvez maintenant configurer ReSharper afin de lancer automatiquement un nettoyage du code lors de l'enregistrement d'un fichier ! Enfin !
Cette fonctionnalité ne nécessite plus de plugins tiers. Cette fonctionnalité peut être activée sur la page des options ReSharper | Options | Code Editing | Code Cleanup
.
Nous avons étendu la portée du nettoyage du code aux fichiers récemment modifiés et aux fichiers récemment ouverts, ce qui permet de gagner du temps car le nettoyage du code n'a pas à s'exécuter pour l'ensemble de la solution. Pour un ajustement plus précis, vous pouvez spécifier ce qui est qualifié de « récemment ».
Sauvegarde automatique des fichiers une fois le nettoyage du code terminé. Cette fonction peut être activée sur la page des options ReSharper | Options | Code Editing | Code Cleanup
.
Plusieurs améliorations permettent de réduire le temps d'exécution du nettoyage du code :
Nous avons entièrement repensé notre outil d'exécution des tests unitaires pour .NET Framework et .NET Core, ce qui permet d'utiliser le même outil pour les deux environnements d'exécution qui s'exécutent hors du processus Visual Studio. Il aide à résoudre un certain nombre de problèmes liés à la localisation, à l'exécution et au débogage des tests unitaires et offre un contrôle total sur les hiérarchies des tests unitaires pour les tests .NET Core.
Le nouvel outil de test comporte une prise en charge intégrée pour :
La nouveauté la plus significative de l'interface utilisateur est la prise en charge par ReSharper de l'attribut DisplayName
dans les tests .NET Core pour les frameworks xUnit et NUnit.
L'application de filtres à l'arborescence des tests unitaires, par exemple, Passed/Failed/etc. signifie que les compteurs fournissent deux nombres distincts : le nombre total de tests et le nombre de tests qui répondent aux critères de filtrage.
Deux nouvelles actions font leur apparition dans le menu Navigate To :
Nous avons introduit la prise en charge de la méthode Assert.Multiple
de NUnit, qui permet de contrôler plusieurs assertions sans quitter le code après le premier échec.
Les plages horaires de regroupement par durée peuvent être modifiées directement dans les options.
Cette version apporte une meilleure prise en charge des lecteurs d'écran tels que JAWS, NVDA et Microsoft Narrator. Ces lecteurs d'écran ont désormais un meilleur accès aux éléments suivants :
Nous avons de bonnes nouvelles pour les développeurs UWP : les liaisons compilées avec x:Bind
sont enfin prises en charge !
ReSharper résout correctement le code x:Bind
et propose plusieurs inspections et les correctifs rapides correspondants. Il vous avertit des setters de propriété manquants, des attributs BindBack
et des collisions de surcharge. De plus, un ensemble de correctifs rapides Create from Usage permet de générer un champ, une propriété ou une méthode appropriée à l'intérieur des fichiers C# code-behind.
La saisie semi-automatique du code et des informations sur les paramètres sont fournies pour les attributs propertyPath
, BindBack
, and UpdateSourceTrigger
dans une expression x:Bind.
Les refactorisations Change Signature et Safe Delete tiennent désormais compte de l'utilisation de la méthode dans le code XAML et les mettent à jour en conséquence. De plus, les refactorisations Make Static/Const et Encapsulate Field fonctionnent directement à partir du code XAML et mettent correctement à jour les utilisations XAML si vous les appelez à partir d'un fichier C# code-behind.
La prise en compte de la nullabilité est intégrée dans l'analyse de code x:Bind
. ReSharper vous montre maintenant des inspections liées à null directement dans le code XAML si des attributs CanBeNull
et NotNull
existent dans le code C#, par exemple, « Possible System.NullReferenceException
» et « Possible null
» pour les arguments d'une méthode utilisée dans un propertyPath
.
D'autres fonctionnalités de ReSharper telles que Find Usages et Go to Declaration tiennent également compte des liaisons x:Bind
.
En 2020.1, Rider a migré de Mono vers .NET Core sur macOS et Linux. Dans cette version, les outils de ligne de commande ReSharper s'exécutent sur .NET Core sous Windows, Linux et macOS.
Veuillez noter que les outils de ligne de commande ReSharper ne sont plus fournis avec Mono et que les outils pour macOS et Linux nécessitent désormais .NET Core 3.1.
Autre avantage à l'utilisation de .NET Core comme environnement d'exécution au lieu de Mono : les outils de ligne de commande ReSharper peuvent être installés en tant qu'outil global .NET Core. Exécutez la commande suivante pour les installer :
dotnet tool install -g JetBrains.ReSharper.GlobalTools --version 2020.2.0-*
Et lancez l'outil avec jb tool_name [options]
, par exemple :
jb inspectcode yourSolution.sln -o=<pathToOutputFile>
Le moteur yFiles utilisé pour dessiner le graphique a été mis à jour vers sa dernière version. Cette nouvelle version de yFiles, en plus de nos optimisations, améliore considérablement les performances de dessin du graphique résultant.
Il est maintenant possible d'exporter le graphique résultant vers de nouveaux formats :
La fenêtre d'outils du diagramme prend enfin en charge le thème sombre de Visual Studio.
La navigation vers les utilisations des types à partir d'assemblies externes dans le code est désormais beaucoup plus facile. ReSharper peut naviguer directement des résultats de recherche Go to Type vers Find Usages. Pour essayer, recherchez un type, mettez-le en surbrillance dans la liste à l'aide du clavier ou de la souris et appelez Find Usages ou Go to Usage en utilisant leur raccourci respectif.
À partir de la version v2020.2, plusieurs actions de ReSharper peuvent être appelées directement à partir des boîtes de dialogue Go to Symbol et Go to File Member, en utilisant les raccourcis correspondant à ces actions dans votre configuration clavier préférée. C'est notamment le cas de l'affichage de la documentation rapide.
Un ensemble de nouvelles actions Peek a été ajouté pour afficher le résultat de certaines actions courantes de ReSharper dans une vue Peek Definition.
Appelez l'action Peek Implementation pour ouvrir une vue Peek de l'implémentation en cliquant sur la molette de la souris tout en maintenant Ctrl+Alt, ou la combinaison Ctrl+Alt+Q en plaçant le curseur sur un symbole.
Appelez l'action Peek Base Symbols pour observer tous les symboles de base dans une vue Peek. Appuyez simplement sur Maj+Alt+Q sur un symbole pour l'exécuter.
Dans cette version, la boîte de dialogue Conflicts a été remaniée sous forme d'étape distincte dans l'interface Refactorings. La liste simple d'avant a été remplacée par une arborescence regroupée par fichiers.
Lorsque vous appelez les refactorisations Introduce parameter ou Introduce field sur une expression, ReSharper demande à quelle partie de l'expression appliquer la refactorisation.
ReSharper C++ 2020.2 inaugure la prise en charge du modèle de projet Unreal Engine, en apportant des suggestions d'importation automatique plus intelligentes pour les directives include
et la prise en charge de plusieurs configurations de solution. ReSharper C++ adhère également plus étroitement aux directives Unreal Engine en ajustant la gravité de l'inspection et les actions de génération de code.
Pour faciliter la navigation, Search Everywhere/Go To traite désormais les symboles des sources du moteur comme des symboles de bibliothèque. Plusieurs nouvelles inspections appliquent elles aussi les directives Unreal Engine et vous rappellent d'actualiser les fichiers de projet dans Unreal Editor.
La licence ReSharper incluant désormais les produits ReSharper et ReSharper C++, la prise en charge de C++/CLI (une passerelle entre les langages) a fait l'objet de nombreuses mises à jour et d'une meilleure interopérabilité entre C++/CLI et C#.
ReSharper C++ trouvera des symboles dérivés dans le code C#, tandis que Go to Base Symbols et Go to Derived Symbols fonctionnent désormais sur les entités CLR importées.
ReSharper C++ inspecte maintenant la façon dont vous allouez la mémoire et suggère un correctif rapide pour remplacer gcnew
par new
(et inversement) lorsque le type de cible n'est pas valide. Une autre inspection vous avertit lorsque vous essayez d'utiliser le spécificateur C++ final
sur une classe ou une interface gérée, avec un correctif rapide pour le rendre sealed
à la place. De plus, vous pouvez désormais utiliser un correctif rapide pour convertir une conversion de style C en une safe_cast
.
ReSharper aligne désormais correctement les colonnes de code similaire, même lorsque seule une partie du bloc aligné est mise en forme. L'ajout d'un point-virgule ou d'une accolade ne rompt donc plus l'alignement.
L'outil d'exécution de console dotCover propose plusieurs améliorations :
--reportype=SummaryXml
vous permet de créer un nouveau type de rapport Summary, qui comprend des données sur le nombre total de classes, de méthodes et d'instructions couvertes. --reporttype=HTML,SummaryXml
--output=report.html;summary.xml
La version indépendante de dotTrace et dotTrace dans Rider sont toutes deux capables de profiler la partie native des applications Mono/Unity sous Windows. Il vous suffit de lancer une session avec l'option « Enable native profiling » pour consulter les piles d'appels natives et gérées dans les instantanés de performances. Cette fonctionnalité permet d'analyser les goulots d'étranglement des performances dans les jeux Unity.
Le profileur de console dotTrace bénéficie de quelques améliorations :
Désormais, vous pouvez ouvrir les objets épinglés en tant qu'ensemble d'objets distinct et ouvrir les objets qui ne sont pas accessibles à partir des racines GC en tant qu'ensemble d'objets distinct.
Citons parmi les améliorations apportées au profileur de ligne de commande dotMemory :
dotPeek poursuit le renforcement de sa compatibilité avec les versions les plus récentes de C#, et la nouvelle version apporte les éléments suivants :
Throw
.NullablePublicOnly
.Essai gratuit sur 30 jours disponible