Analyse du code
Ajout de modèles de fusion
L'inspection Merge into pattern peut maintenant traiter beaucoup plus de schémas de code. Vous pouvez :
- fusionner les vérifications de valeurs null avec les autres vérifications dans une seule vérification de pattern ;
- réécrire les contrôles des expressions conditional?.Access dans la reconnaissance de schémas imbriquée ;
- réduire l'imbrication d'instructions if en fusionnant les vérifications ;
- et enfin, fusionner les patterns dans un simple pattern de déconstruction var (a,b) en les développant dans un formulaire complet.
Prise en charge de C# 9.0 étendue
JetBrains a amélioré la prise en charge des enregistrements C# 9.0.
- Les refactorisations Extract interface et Extract superclass fonctionnent maintenant avec les déclarations d'enregistrements, tout comme File Layout et les fonctionnalités liées à la documentation XML.
- JetBrains a ajouté plusieurs nouvelles inspections et actions. Redundant explicit property declaration pour les propriétés dans les déclarations d'enregistrements peut être utile lors de la migration du code pour utiliser des enregistrements avec des paramètres positionnels et des déclarations de propriétés implicites. Un correctif rapide correspondant, Remove explicit property, est inclus.
- Il y a aussi de quoi garder les choses en ordre : l'inspection Redundant 'record' type declaration body et le correctif rapide correspondant remplaceront le corps vide de la déclaration de type d'enregistrement par un point-virgule.
- Si vous décidez de convertir un enregistrement en classe, l'action To class se chargera des paramètres positionnels et du constructeur primaire. Il y a une action To record qui fonctionne aussi dans le sens inverse.
- Pensez à utiliser l'action contextuelle To explicit constructor lorsque vous devez réécrire des paramètres positionnels et un constructeur primaire en propriétés ordinaires, constructeur et méthode Deconstruct() explicite.
- Find usages recherche désormais les utilisations du constructeur primaire d'un enregistrement et les utilisations d'une méthode Deconstruct() implicite.
Convertir une variable temporaire en variable inline
JetBrains introduit une nouvelle inspection : Inline temporary variable. Parfois, vous vous retrouvez à utiliser la même valeur à maintes reprises sous différents noms dans votre programme. Il est possible de rendre ce genre de code plus transparent, et ReSharper peut vous y aider. Il peut même vous aider à trouver des bugs si la variable temporaire était censée être initialisée par une autre valeur ou mutée plus tard dans le code.
Autres ajouts
Les patterns logiques not peuvent vous aider à rendre vos vérifications de types beaucoup plus faciles à lire. ReSharper permet d'abandonner la syntaxe !() au profit d'un schéma not.
En ce qui concerne la prise en charge de C# 10.0, JetBrains a appris à ReSharper à travailler avec la fonctionnalité d'interpolation constante des chaînes. Notons encore que ReSharper suggère désormais d'utiliser l'opérateur de plage au lieu de Slice et Substring, si cela simplifie le code. L'inspection Namespace does not correspond to file location est désormais supprimée dans les fichiers contenant du code de niveau supérieur. Et une autre nouvelle inspection vérifie si une propriété automatique peut être remplacée par une propriété calculée, avec un correctif rapide pour effectuer le remplacement.
Modèles de route ASP.NET Core
Les modèles de route sont largement utilisés dans les applications MVC pour configurer la manière dont les requêtes HTTP sont associées aux points de terminaison exécutables de l'application. Dans la version 2021.1, ReSharper introduit la prise en charge des modèles de route. L'EDI fournit maintenant la saisie semi-automatique du code, la navigation structurelle, des inspections et des correctifs rapides. Cela comprend :
- des inspections pour vérifier les erreurs de syntaxe HTTP ;
- des inspections et des correctifs rapides pour vérifier/corriger les problèmes de paramètres de routes ;
- des inspections pour les contraintes de route.
Renommer dans les tuples
Les tuples nommés sont présents depuis C# 7, mais le renommage des composants restait une opération manuelle. Désormais, vous pouvez faire appel à la refactorisation.
Navigation
Vous disposez maintenant d'une nouvelle action de navigation : Navigate to Windows Explorer. Vous la trouverez dans le menu Navigate | Navigate to ou en appuyant sur Ctrl+Maj+A et en tapant son nom. Cela peut être utile si vous agissez sur le fichier lui-même, par exemple si vous le copiez ou si vous copiez le chemin à l'intérieur du référentiel, ou si vous préférez voir l'historique du VCS du fichier en utilisant les extensions Git pour l'explorateur Windows.
Performances
Bien que JetBrains soit toujours en train de travailler l'avancement du mode « out of process » pour ReSharper, l'entreprise continue de corriger les problèmes spécifiques de performance. Cela inclut :
- l'accélération de la saisie des fichiers Razor au sein des solutions contenant de nombreux projets ;
- l'accélération de la saisie dans tous les fichiers volumineux dans lesquels les analyseurs de ReSharper sont utilisés ;
- l'amélioration des performances et de la réactivité des conseils sur les données dans le débogueur ;
- l'optimisation de la façon dont ReSharper traite les documents partagés, de sorte qu'il consomme désormais moins de mémoire ;
- l'implémentation d'améliorations de performance pour les tests unitaires JavaScript et TypeScript.
Mise en forme et styles de code
JetBrains a ajouté quelques nouveaux paramètres :
- vous pouvez maintenant choisir de mettre un espace avant et dans les parenthèses de la cible new() ;
- vous pouvez spécifier le retour à la ligne avant l'opérateur d'affectation ;
- vous pouvez ajouter un retrait négatif aux déclarations d'étiquettes.
Pour les règles de nommage personnalisées, les règles les plus spécifiques sont désormais appliquées en premier. Et enfin, JetBrains a ajouté une nouvelle action Reindent only pour la mise en forme de la sélection. Vous pouvez maintenant demander à ReSharper de n'ajuster les retraits que pour le code sélectionné au lieu d'effectuer tout le processus de reformatage.
EditorConfig
EditorConfig est de plus en plus populaire dans la communauté .NET et JetBrains continue à améliorer l'intégration de l'outil avec ReSharper. Les améliorations suivantes ont été apportées :
- JetBrains a amélioré la façon dont ReSharper lit les paramètres des règles de nommage à partir d'EditorConfig et celle dont il écrit les règles de nommage définies par l'utilisateur dans EditorConfig ;
- si les règles de nommage sont redéfinies dans EditorConfig, ReSharper affiche une notification sur la page des paramètres de nommage ;
- JetBrains a ajouté la prise en charge de l'option csharp_indent_case_contents_when_block dans EditorConfig.
Tests unitaires
JetBrains a implémenté la prise en charge des adaptateurs VSTest, une fonctionnalité qui vous permet de trouver et d'exécuter des tests à partir d'un framework tiers. Désormais, vous n'êtes plus limité par les frameworks que JetBrains prend en charge par défaut. Activez la fonctionnalité dans ReSharper | Options | Tools | Unit Testing | Test Frameworks | VSTest.
JetBrains a aussi implémenté la prise en charge de MSTest dans les projets de la plateforme d'application universelle Windows pour Visual Studio 2019.
Certains d'entre vous ont rencontré le problème de « processus engendré » : parfois, le testeur termine son travail, mais un processus qu'il a lancé reste actif. JetBrains a ajouté un paramètre pour le plan d'action par défaut dans ce cas. Vous pouvez maintenant choisir entre indiquer ce que vous désirez faire, ne rien faire ou terminer le processus généré. Votre choix est enregistré dans ReSharper | Options | Tools | Unit Testing | Test Runner. Vous pouvez toujours l'effacer si ce n'était pas correct.
Comme autre nouveauté pour les tests unitaires, notons que JetBrains a implémenté un ensemble d'inspections pour la bibliothèque AutoFixture dans NUnit. ReSharper vérifie désormais si le type de valeur de test est correct, vérifie qu'il n'y a pas d'arguments redondants dans l'attribut [InlineAutoData], et vous avertit s'il n'y a pas d'attribut [TestFixture] ou [Test] sur la classe ou la méthode de test. Ajoutons encore que la prise en charge de QUnit a été mise à jour vers la version 2.14.0.
Autres mises à jour
ReSharper 2021.1 vient avec une nouvelle action pour copier les liens GitHub avec la fonctionnalité Copy FQN. Lorsque vous appelez Copy Fully-qualified name depuis le menu principal (ReSharper | Edit) ou depuis Ctrl+Maj+A, ReSharper effectue la copie et ouvre un menu contextuel où vous pouvez choisir parmi plusieurs formats, au cas où vous auriez besoin d'un format autre que le format par défaut. Ce menu inclut désormais les liens GitHub.
Si vous utilisez des expressions régulières dans des chaînes en C#, VB.NET ou JavaScript, même dans des Razor Pages, vous apprécierez probablement la fonctionnalité d'extension/réduction de la sélection, qui fonctionne désormais avec les injections également. JetBrains a également ajouté des conseils de conversion de type pour les conversions de tuples.
En outre, une nouvelle contrainte Body est disponible pour les méthodes dans File Layout. Elle vous permet de spécifier différentes règles pour les méthodes block-bodied et expression-bodied.
Nouveautés et téléchargement de ReSharper 2021.1