ReSharper 2021.1 apporte des améliorations dans l'analyse du code, la prise en charge des modèles de route ASP.NET, le renommage des composants de tuples, et plus encore.
Essai gratuit sur 30 jours disponible
L'inspection Merge into pattern peut maintenant traiter beaucoup plus de schémas de code. Fusionnez les vérifications de valeurs null avec les autres vérifications dans un seule et même vérification de pattern :
Réécrivez les contrôles des expressions conditional?.Access
dans la reconnaissance de schémas imbriquée :
Réduisez l'imbrication d'instructions if
en fusionnant les vérifications :
Enfin, vous pouvez fusionner les patterns dans un simple pattern de déconstruction var (a,b)
en les développant dans un formulaire complet :
Nous avons 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.
Nous avons ajouté plusieurs nouvelles inspections et actions. Redundant explicit property declaration pour les propriétés dans les déclarations record
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.
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.
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 record
par un point-virgule.
Find usages recherche désormais les utilisations du constructeur primaire d'un enregistrement et les utilisations d'une méthode Deconstruct()
implicite.
Nous avons le plaisir de présenter une nouvelle inspection : Inline temporary variable. Parfois, vous vous retrouvez à utiliser la même valeur à maintes reprises sous différents noms dans votre programme. Est-il possible de rendre ce genre de code plus transparent ? Bien sûr, et ReSharper est là pour 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.
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 pattern not
.
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.
Une autre nouvelle inspection vérifie si une propriété automatique peut être remplacée par une propriété calculée, avec un un correctif rapide pour effectuer le remplacement.
En ce qui concerne la prise en charge de C# 10.0, nous avons appris à ReSharper à travailler avec la fonctionnalité d'interpolation constante des chaînes.
Ne manquez pas l'article de blog qui vous donnera tous les détails sur l'analyse de code dans la version 2021.1 !
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, nous introduisons la prise en charge des modèles de route : ReSharper offre désormais une navigation structurelle, des inspections et des correctifs rapides. Voyons quelques exemples.
Les inspections les plus basiques vérifient les erreurs de syntaxe des modèles de route : une route de paramètre catch-all placée accidentellement au milieu du modèle, la déclaration du paramètre catch-all comme optionnel, l'ajout d'une valeur par défaut pour le paramètre optionnel, et ainsi de suite.
Les paramètres de route sont à l'origine de cas intéressants. Que se passe-t-il si vous déclarez un paramètre avec le même nom dans le contrôleur et dans l'action ? ReSharper vous le signalera par un avertissement.
Par ailleurs, des paramètres peuvent manquer. Dans ce cas, ReSharper vous proposera de les ajouter, soit à partir de l'attribut du contrôleur, soit à partir de l'action. S'il existe une contrainte de type, elle sera utilisée pour l'inférence du type du paramètre.
En parlant de contraintes, elles constituent un bon terrain pour l'analyse du code. ReSharper vérifie si la contrainte appliquée est correcte et si un paramètre répond effectivement à la contrainte.
Il essaie également d'analyser si le type de paramètre peut être plus strict, en fonction de la contrainte, et peut suggérer de changer le type. Si vous avez délibérément choisi un type différent pour le paramètre, ne tenez simplement pas compte de la suggestion.
ReSharper est également capable de prendre en compte les contraintes personnalisées. Si dans certains cas ils ne sont pas reconnus, annotez votre classe de contrainte avec l'attribut [RouteParameterConstraint]
fourni par JetBrains.Annotations.
Quant aux autres fonctionnalités de notre pack standard, elles comprennent la saisie semi-automatique du code, la navigation structurelle et la réorganisation du code.
Le changement de nom des paramètres de route n'a plus besoin d'être effectué manuellement : la refactorisation Rename est là pour vous.
Tout ce qui précède fonctionne pour l'instant pour le routage basé sur les attributs. Nous sommes impatients de connaître votre avis sur cette nouveauté.
Pour en savoir plus sur les modèles de route ASP.NET Core, veuillez consulter cet article de blog.
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.
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.
Bien que nous soyons toujours en train de travailler l'avancement du mode « out of process » pour ReSharper, nous continuons de corriger les problèmes spécifiques de performance. Voici quelques exemples de que nous avons pu faire.
Nous avons ajouté quelques nouveaux paramètres :
new()
. Nous avons modifié l'ordre dans lequel les règles de nommage personnalisées sont appliquées : les règles les plus spécifiques s'appliquent dorénavant en premier.
Enfin, nous avons ajouté une nouvelle action pour le format 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.
Nous avons également corrigé un ensemble de bugs. Vous pouvez trouver les détails sur notre outil de suivi.
EditorConfig est de plus en plus populaire dans la communauté .NET et nous continuons à améliorer son intégration avec ReSharper. Voici ce que nous avons changé :
csharp_indent_case_contents_when_block
dans EditorConfig. [InlineAutoData]
, et vous avertit s'il n'y a pas d'attribut [TestFixture]
ou [Test]
sur la classe ou la méthode de test. ReSharper C++ 2021.1 apporte la prise en charge de plusieurs nouvelles fonctionnalités du langage C++20 et C++17 : les types de classe dans les paramètres de modèles non typés, les règles C++20 de déduction des arguments de modèles de classe et noexcept
en tant que composante du type de fonction. Il existe également de nouveaux éléments de saisie automatique du code pour les coroutines, disponibles à la fois dans la saisie automatique du code de base et comme modèles de complétion postfix : co_await
, co_yield
et co_return
.
Nous avons ajouté une série de paramètres de style de syntaxe que vous pouvez utiliser pour appliquer le style de code souhaité pour les constructions de syntaxe. Avec les inspections complémentaires, les correctifs rapides et les actions contextuelles Apply Syntax Style et Cleanup selection, vous pouvez facilement appliquer le nouveau style à la base de code et assurer la cohérence du nouveau code.
Essai gratuit sur 30 jours disponible