ReSharper 2024.1 est disponible :
Amélioration de la prise en charge de C# et Razor, de l'interface/expérience utilisateur et bien plus

Dans ReSharper 2024.1, JetBrains a amélioré la prise en charge de C# pour fournir encore plus de suggestions pour la conversion du code en expressions de collections et des avertissements lorsqu'une collection est modifiée pendant l'itération dans les boucles foreach. La prise en charge de Razor résout désormais les références pour les directives @addTagHelper et @removeTagHelper. D'autre part, l'interface/expérience utilisateur servant à modifier les règles de nommage personnalisées a été considérablement améliorée.

Prise en charge de C#

Plus de conversions en expressions de collection

Désormais, vous recevrez des suggestions pour convertir davantage de constructions de code dans votre code source en expressions de collection de C# 12, telles qu'un tableau vide ou la déclaration et l'initialisation de ImmutableArray.


Analyse Collection was modified

JetBrains a ajouté l'inspection Possible 'System.InvalidOperationException: Collection was modified', qui vous prévient lorsqu'une collection est modifiée pendant son itération dans les boucles foreach, car cette modification pourrait provoquer une exception lors de l'exécution. Cette analyse tient compte des cas de sortie de la boucle après la modification d'une collection. Par conséquent, ces cases ne déclenchent pas l'avertissement.

Cette inspection s'accompagne d'un correctif rapide pour vous aider à résoudre ce problème instantanément.


Mise à jour de Generate | Formatting Members

Generate | Formatting Members vous permet de générer automatiquement du code pour contourner la méthode ToString() et renvoyer une chaîne significative pour vos types. À compter de la version 2024.1, cette fonctionnalité prend en charge davantage de types, tels que ISpanFormattable, IUtf8SpanFormattable et IFormattable.

Meilleure prise en charge du nettoyage des ressources dans les méthodes asynchrones

  • Améliorations de l'annotation [MustDisposeResource] : l'analyse de code C# permet désormais de s'assurer que les ressources renvoyées par les méthodes asynchrones, y compris celles encapsulées dans Task<IDisposable> et ValueTask<IDisposable>, sont correctement libérées, afin de ne pas supprimer accidentellement la tâche.
  • Valeurs de retour semblables à une tâche : l'analyse correcte des valeurs de retour semblables à une tâche dans la version 2024.1 permet de s'assurer que la ressource attendue est vérifiée avant sa suppression et inclut également les ressources extraites via .ConfigureAwait(...), .AsTask() ou .Result.

Mises à jour de la refactorisation Change Signature

Voici les principales améliorations apportées à la refactorisation Change Signature :

  • Cette refactorisation prend désormais en charge les méthodes Deconstruct. Vous pouvez ajouter, supprimer, réorganiser et renommer des paramètres, et ces modifications seront reportées aussi bien dans la déclaration de méthode que ses utilisations.
  • La saisie semi-automatique du code est désormais disponible pour les paramètres de type. Cela signifie que lorsque vous devez spécifier un type pour List<>, par exemple, vous pouvez utiliser la saisie semi-automatique du code pour sélectionner facilement le type voulu, tel que int.
  • Les noms d'espace de type sont automatiquement raccourcis lors de l'ajout ou de la mise à jour des paramètres. Cela permet de conserver le code propre et simple après la refactorisation. Par exemple, si vous spécifiez le type System.Collections.Generic.List<System.Int16> dans la boîte de dialogue Change Signature, il sera automatiquement raccourci pour donner List<short> dans le code résultant.
  • Cette refactorisation prend désormais en charge davantage de fonctionnalités des dernières versions de C#, telles que les modificateurs in et ref readonly et les types record.

Mises à jour de la refactorisation Make Static

La refactorisation Make Static prend maintenant en charge les paramètres des constructeurs primaires. Ils apparaissent dans la liste Introduce parameters et disposent d'une icône distincte pour les reconnaître plus facilement. Cette refactorisation est également disponible pour les fonctions locales.

Prise en charge de la bibliothèque protobuf-net

L'analyse du code prend désormais en charge l'attribut ProtoContract et l'énumération ImplicitFields depuis la bibliothèque protobuf-net. Ces deux éléments permettent de marquer les membres qui sont utilisés de façon implicite pour la sérialisation. Par conséquent, ces membres ne sont plus signalés par les avertissements unused members.

Prise en charge de Razor

Résolution des références pour les directives @addTagHelper et @removeTagHelper

ReSharper peut maintenant résoudre les références pour les noms d’assemblies spécifiés dans les directives @addTagHelper et @removeTagHelper dans vos vues Razor. Ainsi, vous bénéficiez de la saisie semi-automatique du code, de la recherche des utilisations et de la navigation facilitée dans le code.

ReSharper traite désormais les noms d'assembly non résolus comme des erreurs et les met en évidence en rouge.


Prise en charge de C++

Principales améliorations dans la prise en charge de C++ :

  • L'implémentation remaniée des modules C++20 améliore les performances et assure la prise en charge des partitions de modules internes.
  • Change Signature offre de nouvelles fonctionnalités, telles que la capacité à changer le type du paramètre pour le définir en tant que pointeur, référence ou type de valeur.
  • Call Tracking prend désormais en charge les chaînes d'appels sortants.
  • Vous pouvez désormais personnaliser facilement le style des commentaires de documentation générés. De plus, des inspections grammaticales sont maintenant accessibles depuis les commentaires de documentation.
  • Slate, le framework d'interface utilisateur d'Unreal Engine, est désormais pris en charge.

Performances

Mode d'utilisation intensive des ressources pour les analyses à l'échelle de la solution

JetBrains travaille sur le mode d'utilisation intensive des ressources pour l'analyse à tous les niveaux de la solution, ce qui réduit considérablement la durée de l'analyse via une utilisation du parallélisme du processeur plus efficace. L'éditeur de logiciels pour développeurs a amélioré le profil d'affectation de la mémoire des activités d'analyse du code pour minimiser le temps consacré au nettoyage de la mémoire. Pendant la phase de finalisation, JetBrains vous invite à activer ce mode et lui faire part de votre avis sur cette expérience.

Refactorisation Rename plus rapide

Le changement de nom des éléments de votre code est désormais plus rapide et efficace. Cette modification affecte également les autres composants centraux de ReSharper, ce qui a permis d'améliorer de nombreuses fonctionnalités, telles que Find Usages.

Refactorisation Move to Another Type plus rapide

Les performances de la refactorisation Move to Another Type pour les membres statiques ont été considérablement rehaussées pour gérer les grandes classes.

Formatage du code

Interface/expérience utilisateur améliorée pour les règles de nommage personnalisées

Les modifications devraient faciliter la manipulation des règles de nommage avancées et l'application de toutes les règles importées depuis les fichiers EditorConfig.

Paramètre Remove whitespace on blank lines

Ce nouveau paramètre de mise en forme vous permet de laisser ou supprimer les espaces dans les lignes vides.

Décompilateur

Nouvelle fenêtre d'outils Assembly Diff

La version 2024.1 introduit la nouvelle fenêtre d'outils Assembly Diff dans ReSharper. Cela s'accompagne de deux changements :

  • La possibilité de comparaison des assemblies, des paquets NuGet, des dossiers et des archives .zip a été déplacée de la fenêtre Assembly Explorer vers la fenêtre d'outils Assembly Diff.
  • Le sélecteur Diff mode et les boutons Compare et Diff Options ont été relocalisés dans la barre Actions de la fenêtre d'outils Assembly Diff.


Prise en charge du format de package WebCIL

Le décompilateur de ReSharper prend désormais en charge le format de package WebCIL pour WebAssemblies. Cette prise en charge couvre :

  • La décompilation pour WebCIL.
  • La possibilité d'afficher des fichiers .wasm dans la fenêtre Assembly Explorer.
  • Les sous-arborescences de métadonnées pour les nœuds WASM dans Assembly Explorer, ce qui inclut les en-têtes WASM et WebCIL.

Prise en charge de MAUI dans dotTrace, dotMemory et dotCover (dotUltimate)

Les versions autonomes de dotTrace, dotMemory et dotCover prennent désormais en charge les applications de bureau MAUI et les applications .NET macOS.

Frameworks cibles pris en charge :

  • MAUI Windows (dans dotTrace, dotMemory, dotCover) : net8.0-windows, net7.0-windows
  • MAUI Mac (dans dotTrace uniquement) : net8.0-maccatalyst, net7.0-maccatalyst
  • Applications macOS (dans dotTrace et dotMemory) : net8.0-macos, net7.0-macos

La prise en charge des projets MAUI est maintenant disponible dans dotTrace, dotMemory et dotCover depuis Visual Studio.

Prise en charge du Frozen Object Heap (dotUltimate)

L'outil de profilage autonome dotMemory prend désormais en charge le Frozen Object Heap, une fonctionnalité introduite pour la première fois avec le SDK .NET 6 dans le cadre de l'amélioration des performances de nettoyage de la mémoire.

Le FOH alloue une zone de mémoire dédiée aux objets immuables. Ces objets ne sont plus modifiés après leur allocation et ne sont pas affectés par le nettoyage de la mémoire. La prise en charge de cette technologie permet à dotMemory d'effectuer une analyse plus détaillée de la mémoire utilisée par les objets immuables dans le FOH, ce qui booste l'optimisation de l'utilisation de la mémoire.

Outils de ligne de commande

SARIF devient le format par défaut

À partir de la version 2024.1, le format de sortie par défaut d'InspectCode est SARIF. Le format XML sera bientôt obsolète. Les résultats restent disponibles au format XML dans la version actuelle lors de l'utilisation du paramètre -f="xml".

Divers

Refactorisation en dehors du processus

JetBrains a terminé une refactorisation interne des commandes de texte. Dans le cadre de ses travaux sur l'exécution hors processus de ReSharper, cette refactorisation est conçue pour améliorer le typage et les aspects connexes des performances de l'éditeur aussi bien pour ReSharper que Rider.

Gestionnaire d'extensions

JetBrains Marketplace a adopté un nouveau mécanisme de filtrage qui repose sur la vérification de la compatibilité pour son flux de plugins. Ainsi, les plugins incompatibles ne s'affichent plus dans le gestionnaire d'extensions de ReSharper.

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