Nouveautés de ReSharper 2024.1

Avec ReSharper 2024.1, nous poursuivons notre travail d'amélioration de la prise en charge de C# en incluant davantage de suggestions pour convertir le code en expressions de collections et des avertissements lorsqu'une collection est modifiée lors d'une itération à l'intérieur de boucles foreach. La prise en charge de Razor permet de résoudre les références pour les directives @addTagHelper et @removeTagHelper et nous avons considérablement amélioré l'interface/expérience utilisateur pour l'édition des règles de nommage personnalisées.

Télécharger

Essai gratuit sur 30 jours disponible

Prise en charge de C#

Plus de conversions en expressions de collection

Plus de conversions en expressions de collection

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

Analyse Collection was modified

Analyse Collection was modified

Nous avons ajouté l'inspection Possible 'System.InvalidOperationException: Collection was modified', qui vous prévient lorsqu'une collection est modifiée lors de l'itération dans les boucles foreach, cette modification étant susceptible de 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 situations ne déclenchent donc 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

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

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

  • Améliorations de l'annotation [MustDisposeResource] : l'analyse du code C# permet désormais de s'assurer que les ressources renvoyées par les méthodes asynchrones, y compris celles qui sont encapsulées dans Task<IDisposable> et ValueTask<IDisposable>, soient correctement éliminées, afin d'éviter de supprimer accidentellement la tâche elle-même.
  • Valeurs de retour des tâches : la fonction d'analyse de la version 2024.1 garantit que la ressource attendue a bien été supprimée, y compris pour les ressources obtenues via .ConfigureAwait(...), .AsTask() ou .Result.
Mises à jour de la refactorisation Change Signature

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 appliquées dans la déclaration de méthode et dans ses utilisations.
  • La saisie semi-automatique du code est désormais disponible pour les paramètres de type. Lorsque vous devez spécifier un type pour List<>, par exemple, vous pouvez donc utiliser la complétion de code pour sélectionner facilement le type souhaité, tel que int.
  • Les espaces de noms des types sont automatiquement raccourcis lors de l'ajout ou de la mise à jour de paramètres. Cela permet de conserver votre code propre et simple après l'application de 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 en 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

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 sont signalés par une icône distincte pour vous aider à 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 inclus dans 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

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 and @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 considère désormais les noms d'assemblies non résolus comme des erreurs et les met en évidence en rouge afin que vous les visualisiez plus facilement.

Prise en charge de C++

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.

Plus d'informations sur les mises à jour de C++ : Nouveautés de ReSharper C++ 2024.1.

Performances

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

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

Nous travaillons 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. Nous avons 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, nous vous serions reconnaissant d'activer ce mode et de nous 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 apportées ont pour but de faciliter l'utilisation des règles de nommage avancées et le respect de toutes les règles importées de fichiers EditorConfig.

Paramètre Remove whitespace on blank lines

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

Nouvelle fenêtre d'outils Assembly Diff

La version 2024.1 introduit la nouvelle fenêtre d'outils Assembly Diff dans ReSharper. Il en résulte les changements suivants :

  • 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

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

La prise en charge des applications de bureau MAUI et les applications macOS utilisant .NET est maintenant disponible dans dotTrace, dotMemory et dotCover depuis Visual Studio.

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

Cliquez ici pour plus d'informations sur la disponibilité du mode de profilage et les restrictions.

La prise en charge des projets MAUI est également disponible dans les versions autonomes de ces outils .NET.

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

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

Nous avons terminé une refactorisation interne des commandes de texte. Dans le cadre de nos 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. Vous trouverez les dernières informations sur la progression de l'exécution hors processus de ReSharper ici.

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.

Télécharger

Essai gratuit sur 30 jours disponible