ReSharper 2023.1 est disponible :
Aperçu des nouveautés et améliorations de l'extension Visual Studio pour les développeurs .NET

ReSharper 2023.1 améliore la prise en charge de C#, notamment avec un ensemble d'inspections pour optimiser et accélérer votre travail avec différents types de collections, et des solutions plus modulables d'introduction de contrôles de valeur null dans votre code. Cette version introduit également des mises à jour pour les modules C++20, le premier lot de prise en charge des fonctionnalités C++23, ainsi que les aperçus de macro-substitution et le suivi d'appels pour C++. Enfin, l'expérience utilisateur des tests unitaires et du nettoyage du code a également été améliorée.

Prise en charge de C#

Réduction du nombre de recherches dans les collections

JetBrains a introduit un ensemble d'inspections accompagnées de correctifs rapides pour optimiser et accélérer votre travail avec différents types de collections en réduisant le nombre de recherches dans les collections pour :

  • Supprimer une vérification Contains(item) avant d'ajouter l'élément dans HashSet ou toute autre collection implémentant les interfaces ISet.
  • Supprimer une vérification ContainsKey(key) avant d'ajouter l'élément dans Dictionary ou toute autre collection implémentant l'interface IDictionary.
  • Utiliser TryAdd(key, value) pour les collections Dictionary ou les collections héritées de Dictionary lorsque possible.
  • Utiliser TryGetValue(key, out value) pour les collections IDictionary lorsque possible.

Option Syntax Style pour le modèle de vérification de null

JetBrains a fourni le nouveau paramètre Syntax style pour vous aider à appliquer un style cohérent aux vérifications de not null dans les modèles. Cela comprend deux options : syntaxe de modèle récursif vide { } et modèle de négation not null, ce dernier étant utilisé par défaut. Vous pouvez moduler ce comportement à volonté sur la page ReSharper | Options | Code Editing | C# | Syntax Style.


L'utilisation du modèle « not null » a pour inconvénient qu'il ne permet pas d'introduire les noms de variable pour la valeur vérifiée, comme cela est le cas avec le modèle récursif { LastName: { } lastName }. JetBrains a ajouté l'action contextuelle Add pattern variable au modèle not null pour rechercher les expressions accédant à la même valeur (dans la mesure où l'éditeur de logiciels pour développeurs introduit un nom de variable) et les remplacer toutes par le nouveau nom, afin de consolider tous les accès à la même valeur.


Style ArgumentNullException.ThrowIfNull de vérification de null

Le SDK .NET 6.0 a introduit une nouvelle API pour la vérification de null : ArgumentNullException.ThrowIfNull. Le moteur d'analyse de code de JetBrains reconnaît cette approche de vérification depuis son introduction, mais il n'était pas possible d'utiliser cette API comme style par défaut pour les vérifications de null produites par ReSharper. Dans la version 2023.1, JetBrains a ajouté le modèle ArgumentNullException.ThrowIfNull à ReSharper | Options | Code Editing | C# | Null checking.


Extraction du modèle de propriété commun

Si vous recourez de façon intensive au filtrage par motif des propriétés, essayez la nouvelle inspection incluant un correctif rapide pour extraire les éléments communs de plusieurs schémas de propriétés lorsqu'ils sont utilisés dans le même flux de code. Le code généré par le correctif rapide Extract common property pattern permet de réduire la répétition du code en déplaçant les modèles de propriétés communs vers un modèle de niveau supplémentaire.


Suppression des régions vides

Les développeurs C# s'appuient souvent sur la directive #region et le pliage de code dans l'EDI pour structurer leur code. La refactorisation peut laisser certaines entrées #region vides, ce qui risque de prêter à confusion lorsque le code est réduit. Cette nouvelle inspection de code permet d'identifier les entrées #region vides à l'état réduit et de nettoyer le code avec le correctif rapide correspondant.


Remplacement de span.SequenceEqual("str")

L'analyse de code inclut une inspection de code qui propose le remplacement de span.SequenceEqual("stringLiteral") par span is "stringLiteral", ce qui donne une syntaxe C# plus pratique que l'appel d'une fonction.


Insertion d'une spécification de type de retour pour les lambdas

Les expressions lambda du code C# peuvent avoir des paramètres à typage implicite et des types de retour déduits. Toutefois, des types explicites peuvent être ajoutés pour clarifier le code dans les scénarios complexes de résolution de surcharge. À partir de C# 11, il est également possible d'ajouter une spécification de type de retour pour les expressions lambda. Pour cette raison, JetBrains a introduit l'action contextuelle Insert return type specification dans ReSharper 2023.1. Cette action peut s'appliquer à toutes les portées, ce qui inclut les méthodes, la classe, le fichier, le projet ou l'intégralité de la solution, pour ce faire.


Inspection Pattern is redundant

Les modèles C# or/and/not sont utiles pour les vérifications de valeurs compactes, mais peuvent être moins facilement identifiables que les expressions traditionnelles, telles que ||/&&/!. Ils peuvent également être à l'origine de bugs difficile à trouver si des parenthèses manquent. Pour faciliter cela, JetBrains a introduit une nouvelle analyse de code dans la version 2023.1 qui vous signale les vérifications « caduques » dans les modèles complexes.


Action contextuelle Convert to list pattern

L'éditeur de logiciels pour développeurs poursuit l'amélioration de la prise en charge des modèles de liste C# 11. La nouvelle action contextuelle Convert to list pattern permet de transformer les vérifications de longueur de collection en syntaxe de modèle de liste. Cela fonctionne à condition que la vérification de longueur de la collection puisse être réalisée.


Prise en charge de C++

Aperçu de la substitution des macros

Lors du survol d'une macro, vous voyez désormais un aperçu de sa version étendue dans l'infobulle, avec la mise en évidence complète des éléments de syntaxe et la bonne mise en forme du code. Vous pouvez toujours utiliser l'action contextuelle Substitute macro call pour vérifier la version étendue de la macro directement dans le code, mais l'aperçu instantané simplifie la manipulation des macros. De plus, la fenêtre contextuelle Quick Documentation (Ctrl+Maj+F1) permet de cliquer sur une entité depuis l'aperçu de la substitution pour consulter sa documentation.


Suivi des appels

La fonctionnalité Call tracking est enfin disponible dans ReSharper C++ ! Il est désormais possible d'afficher les chaînes d'appels et de les parcourir dans la hiérarchie des appels entrants. Dans la fenêtre des résultats de suivi d'appels, vous pouvez double-cliquer sur l'entrée de la hiérarchie pour accéder à l'appel correspondant dans l'éditeur ou étendre l'un des nœuds pour vérifier ses appels entrants.


Modifications de l'expérience/interface utilisateur

Boîte de dialogue de mise à jour

ReSharper 2023.1 introduit une boîte de dialogue de mise à jour remaniée qui contient des notes sur les modifications apportées au dernier build disponible, de façon à vous permettre de télécharger ou d'ignorer la mise à jour en connaissance de cause.

Nouvelle boîte de dialogue de raccourci

À partir de la version 2023.1, lorsque vous démarrez ReSharper pour la première fois, l'écran des raccourcis clavier s'affiche et permet de sélectionner les profils de raccourcis à utiliser.


Nettoyage du code

Reformat inactive preprocessor branches in file est un nouveau type de tâche introduit dans ReSharper 2023.1. Cette tâche vous permet de reformater les branches de préprocesseurs inactifs. Cela doit s'appliquer uniquement à l'ensemble du fichier et fonctionne exclusivement avec les sources C#.

Cette tâche ne permet pas de reformater le code masqué derrière une directive de préprocesseur #if qui a toujours la valeur false. Les deux exemples les plus évidents de cette limitation sont les constructions #if false ... #endif et #define A #if !A ... #endif.


Tests unitaires

Les filtres de recherche de texte appliqués aux arborescences de tests unitaires, aussi bien dans les fenêtres d'outils Session que Explorer, sont désormais pris en compte lors de l'exécution de tests au moyen des boutons Run de la barre d'outils. Seuls les nœuds qui correspondent aux critères de recherche restent dans la liste et sont exécutés.


Refactorisation Rename

JetBrains a amélioré la façon dont ReSharper gère les changements de nom des fichiers dans un projet. À partir de cette version, lorsque vous renommez un fichier dans votre solution, une boîte de dialogue s'affiche pour renommer les symboles concernés (classes, interfaces, etc.) en fonction de la modification.

dotTrace sous macOS et Linux (Bêta, dotUltimate)

La version autonome de dotTrace est désormais disponible sous Linux et macOS. Vous pouvez maintenant exécuter l'intégralité du workflow de profilage sur ces systèmes d'exploitation, ce qui inclut la collecte et l'analyse des instantanés de performances.

Migration des plugins

Tant que les API qu'ils référencent restent valides et inchangées, les plugins ReSharper migrent désormais de façon automatique d'une version à l'autre.

Un vérificateur d'API intégré vérifie les plugins installés pour la compatibilité binaire et fait migrer les viables. Les auteurs de plugin recevront également des notifications automatiques via JetBrains Marketplace lorsque les API utilisées par leurs plugins ne sont plus présentes dans le SDK.

Divers

Prise en charge de CSS désactivée par défaut

Étant donné la faible demande pour CSS dans ReSharper, JetBrains a de plus en plus de mal à justifier la mise à jour prioritaire vers la dernière version de ce langage. Par conséquent, l'éditeur de logiciels pour développeurs a décidé de mettre la prise en charge de CSS en pause jusqu'à ce qu'il trouve une meilleure solution de prise en charge de ce langage.

À partir de ReSharper 2023.1, la prise en charge de CSS sera désactivée par défaut. Si vous souhaitez continuer d'utiliser le langage, vous pouvez l'activer dans : ReSharper | Options | Environment | Products & Features | case à cocher « CSS ».

Fin du développement pour Visual Studio 2010 et 2012

ReSharper et les outils .NET prennent actuellement en charge 7 versions majeures de Visual Studio, de 2010 jusqu'à la plus récente, 2022. À partir de la version 2023.1, JetBrains a réduit cette liste en abandonnant la prise en charge des deux versions les plus anciennes, Visual Studio 2010 et Visual Studio 2012.

Nouveautés et téléchargement de ReSharper 2023.1