La première version EAP de ReSharper 2021.3 est disponible
Prise en charge de Visual Studio 2022 Preview, support de C# 10 et bien d'autres améliorations et nouveautés

JetBrains ouvre le programme d'accès anticipé (EAP) à ReSharper 2021.3, la troisième mise à jour majeure annuelle de son extension Visual Studio pour les développeurs .NET. Cette première version EAP de ReSharper 2021.3 vient avec la prise en charge de la préversion de Visual Studio 2022, un meilleur support de C# 10 et bien plus de nouvelles fonctionnalités que vous pouvez essayer avant qu'elles ne soient officiellement publiées.

Prise en charge de Visual Studio 2022 Preview

Il y a environ un mois, JetBrains a publié une build avec une prise en charge précoce de Visual Studio 2022 Preview. D'après les retours des utilisateurs, ReSharper fonctionne plus rapidement dans la nouvelle version x64 de Visual Studio, mais JetBrains a décidé de repousser ce support pour la version 2021.3 de ReSharper.

La première version EAP de la v2021.3 inclut déjà la prise en charge des builds de VS2022 Preview. Il n'est pas nécessaire de télécharger et d'installer une build distincte pour exécuter ReSharper dans les builds VS2022 Preview - il suffit de sélectionner l'icône VS2022 Preview dans le programme d'installation de dotUltimate 2021.3 EAP.

Support de langage

C#10

C# 10 approche à grands pas et ReSharper continue d'ajouter certaines des fonctionnalités à venir. Aujourd'hui, on note la prise en charge des espaces de noms à portée de fichier et des usings globales.

Commençons par les espaces de noms à portée de fichier. En plus de prendre en charge la nouvelle syntaxe elle-même, JetBrains a ajouté une nouvelle option de style de syntaxe (ReSharper | Options | Code Editing | C# | Syntax Style | Code body | Namespaces) qui vous aide à sélectionner le style souhaité. Lorsque vous choisissez le style, ReSharper vous montrera des inspections pour le code qui doit être modifié pour suivre le style et suggérera le correctif rapide approprié pour vous. Vous pouvez propager le correctif dans le projet ou même dans l'ensemble de la solution en un clic.


Si vous souhaitez revenir au style de syntaxe précédent pour le code, il existe deux actions contextuelles : « Convert to file-scoped namespace » et « Convert to block-scoped namespace ».


Jetons maintenant un coup d'œil rapide aux usings globales. L'analyse du code ReSharper reconnaît les usings marquées du mot-clé global et utilise ces usings pour résoudre correctement les symboles dans tous les fichiers de code du projet. Si Solution Wide Error Analysis est activé, ReSharper mettra en évidence les usings globales qui n'ont aucune utilisation dans le projet comme inutilisées avec une suggestion de correctif rapide appropriée pour supprimer la déclaration. ReSharper vous avertira également si le using global a été placé au mauvais endroit dans le fichier.


Analyse de code

Il n'est pas rare que les gens copient des morceaux de code à partir d'autres ressources, comme stackoverflow.com. De nos jours, avec des types de référence nullables disponibles en C#, certains des exemples de code incluent déjà la syntaxe NRT. Mais que faire si vous n'avez pas activé la NRT dans votre solution ? Pour vous aider à vous débarrasser de cette syntaxe après avoir collé un tel code dans votre projet, ReSharper propose deux nouveaux correctifs rapides : "Replace with JetBrains.Annotations attributes" et "Remove nullable annotations without ‘#nullable’ context".


JetBrains a ajouté quelques nouveaux correctifs rapides et une action contextuelle pour les fonctions static locales/anonymes avec closures :

  • Un correctif rapide, "Allow closures", pour supprimer les modificateurs static d'une fonction locale ou anonyme si elle contient des closures.



  • Un correctif rapide, "Pass closure as a parameter", pour déplacer les closures dans les fonctions locales static en paramètres.
  • Une action contextuelle, "Pass closure as a parameter", pour passer les closures dans les fonctions locales non-static en paramètres.


Il existe une nouvelle inspection, "Simplify string interpolation", avec un correctif rapide correspondant pour remplacer les appels de méthode .PadLeft() et .PadRight() avec des espaces réservés de chaînes interpolées avec une expression d'alignement.


En plus d'ajouter de nouveaux correctifs rapides, JetBrains a considérablement amélioré les performances du démon pour les fichiers contenant d'énormes méthodes :

  • Méthodes avec des expressions conditionnelles volumineuses/imbriquées, des expressions de tuple ou des expressions Switch.
  • Méthodes avec beaucoup de vérifications de type lorsque les types de référence nullables sont désactivés.
  • Méthodes avec beaucoup d'accès à l'indexeur lorsque les types de référence nullables sont activés.
  • Méthodes avec un grand nombre de closures lorsque les types de référence nullable sont activés.

Désormais, l'analyse du code est terminée plus rapidement pour de tels fichiers.

Copy Code Reference

Cette version apporte de nombreux changements à la fonctionnalité Copy FQN. Tout d'abord, elle a un nouveau nom, Copy Code Reference. JetBrains pense que ce nom reflète mieux ce que fait la fonctionnalité.

Il existe également un raccourci, Ctrl+Maj+Alt+C, pour l'appeler directement depuis le clavier. N'oubliez pas d'appliquer le schéma de raccourci sous ReSharper | Options | Environnement | Clavier | Schéma de raccourci après avoir installé la version EAP pour mapper ce raccourci à l'action.


JetBrains a ajouté de nouvelles fonctionnalités si vous utilisez Git comme système de contrôle de version. Il existe des éléments liés à GitHub dans la fenêtre contextuelle Copy Code Reference prêts à l'emploi pour les projets clonés à partir de GitHub. Ils génèrent un lien approprié vers un référentiel GitHub pour le partager immédiatement avec n'importe qui.

Pour les référentiels hors GitHub, vous pouvez désormais ajouter un modèle d'URI personnalisé dans les paramètres ReSharper. Tous ces modèles apparaîtront dans la fenêtre contextuelle Copy Code Reference. L'URI du modèle peut être constitué de différents espaces réservés prédéfinis tels que le nom de la branche actuelle, le nom du fichier, le numéro de la ligne actuelle, etc. (Current Branch Name, File Name, Current Line Number, etc.)

Enfin, le pop-up lui-même a fait l'objet d'un important lifting. Il a un nouveau design, des icônes et un nouveau formatage.

Prise en charge des fichiers AnalyzerConfig

À partir du SDK .NET 5, vous pouvez configurer les options de l'analyseur Visual Studio avec des fichiers AnalyzerConfig globaux. ReSharper 2021.3 EAP peut lire les informations de style de code à partir de ces fichiers AnalyzerConfig globaux et les utiliser pour ajuster les règles ReSharper en conséquence.

Injections de langage

Vous pouvez maintenant marquer le paramètre, le champ ou la propriété d'une fonction avec l'attribut d'annotation [LanguageInjection]. ReSharper commence à considérer une valeur de chaîne d'une entité de code marquée comme un fragment de code dans un langage spécifié. Il existe les options suivantes de langages injectés : CSS, HTML, JavaScript, JSON ou XML. Dès que vous ajoutez l'attribut, vous obtiendrez une mise en évidence de la syntaxe, une complétion de code et d'autres fonctionnalités appropriées à l'intérieur de la chaîne. Vous devez ajouter la dernière version preview de JetBrains.Annotations à votre projet pour utiliser l'attribut LanguageInjection.


ReSharper C++

S'il y a une expression qui peut être évaluée pendant la compilation sous le curseur de la souris, ReSharper C++ 2021.3 affichera l'info-bulle Quick Info avec le résultat de l'évaluation. Par exemple, vous pouvez désormais consulter le message concernant un static_assert qui bogue pour voir ce que donne l'évaluation de l'expression d'assertion, vérifier la valeur d'un opérateur sizeof ou alignof, ou toute autre expression. Pour une expression binaire, vous pouvez survoler chaque opérande pour obtenir une info-bulle avec sa valeur ou l'opérateur pour obtenir une info-bulle avec le résultat final :


Cette version EAP apporte également des mises à jour de navigation et un certain nombre d'inspections de code pour vous aider à adopter les fonctionnalités de la bibliothèque C++20.

dotMemory

Désormais, dotMemory peut obtenir des données d'échantillonnage sur l'allocation de mémoire en fonction des événements ETW. Par rapport à la méthode traditionnelle (statistique) de collecte des données d'allocation, l'échantillonnage est moins précis mais offre un certain nombre d'avantages :

  • Les données d'allocation d'échantillonnage sont collectées sans pénalités de performance.
  • Vous n'avez pas besoin d'activer explicitement la collecte de ces données, elles sont toujours activées.
  • L'échantillonnage des données d'allocation peut également être collecté lorsque vous attachez le profileur à une application déjà en cours d'exécution.

Notez que cette fonctionnalité est disponible uniquement sous Windows.

dotCover

L'outil global .NET dotCover prend en charge les commandes merge et report.

dotPeek

Le décompilateur prend désormais en charge l'interface IAsyncDisposable.

JetBrains continue d'améliorer sa prise en charge de la lecture et de la décompilation des applications à fichier unique :



  • Vous pouvez voir le contenu des fichiers .json groupés, par exemple, le fichier .runtimeconfig.json.
  • Vous pouvez observer une liste de tous les fichiers intégrés avec des informations techniques sur l'application à fichier unique en cliquant sur le nœud racine dans l'Assembly Explorer.
  • Vous pouvez extraire tous les fichiers dans un dossier en utilisant l'action Extract Bundle Content to Folder du menu contextuel.
  • Vous pouvez extraire la plupart des fichiers du bundle en tant que fichier externe en utilisant l'action Extract to File.

Nouveautés et téléchargement de ReSharper 2021.3 EAP