Nouveautés de ReSharper 2023.2

ReSharper 2023.2 améliore la prise en charge de C# et apporte de nouvelles inspections pour travailler avec les fonctions locales et les chaînes brutes, ainsi que pour résoudre les problèmes courants liés à Entity Framework. Cette version apporte également la prise en charge des refactorisations C++ et de nouvelles fonctionnalités de C++20 et C++23. Parmi les fonctionnalités nouvellement introduites dans ReSharper 2023.2, on trouve la possibilité de créer et de naviguer facilement dans les tests unitaires, le mode de débogage prédictif et le nouvel AI Assistant.

Télécharger

Essai gratuit sur 30 jours disponible

Principales mises à jour

Amélioration de la prise en charge de C#

Amélioration de la prise en charge de C#

ReSharper 2023.2 ajoute de nouvelles inspections de code et de nouveaux correctifs rapides pour travailler avec les littéraux de chaînes brutes et les fonctions locales, ainsi que pour traiter les problèmes courants liés à l'utilisation d'Entity Framework et les directives nullable redondantes. La prise en charge de C# 12 inclut les constructeurs primaires et les expressions lambda avec paramètres optionnels. Nous avons également amélioré la prise en charge des discards et des ressources remplaçables, et ajouté de nouveaux conseils dans les lignes et entre les lignes.

En savoir plus

Navigation et création de tests unitaires

Les tests unitaires de ReSharper ont fait l'objet d'une mise à jour majeure avec l'ajout d'une fonctionnalité permettant de naviguer et de créer des tests pour votre code de production !

Pour créer un test, appelez simplement l'action Generate Code, puis choisissez Unit Test ou appuyez sur Ctrl+U,C. ReSharper vous permet de choisir le nom de la classe de test et peut même créer un projet à partir de votre framework de test préféré (si cela n'est pas déjà fait). Une fois le test créé, vous pouvez naviguer entre votre implémentation et le code de test avec l'action Navigate To ou en appuyant sur Ctrl+U,F.

En savoir plus

AI Assistant

AI Assistant Accès limité

Les versions 2023.2 des IDE basés sur IntelliJ et des outils .NET inaugurent une fonctionnalité majeure : AI Assistant. Actuellement, les fonctionnalités générées par IA fournissent un chat intégré et une assistance pour plusieurs workflows utilisateurs essentiels via des actions contextuelles, ce qui permet à l'AI Assistant d'expliquer les éléments de code sélectionnés, d'éliminer les problèmes potentiels et de générer de la documentation XML.

En savoir plus

Prise en charge de C#

Amélioration de la prise en charge des chaînes brutes

Nous avons ajouté de nouvelles inspections C# et des actions contextuelles pour le travail avec les chaînes brutes et amélioré l'aide à la saisie et les options de formatage :

  • L'inspection Use raw string sert à convertir les chaînes textuelles sur plusieurs lignes en représentations brutes.
  • L'inspection Simplify raw string permet de supprimer les guillemets et les symboles de signe dollar qui deviennent redondants.
  • Plusieurs actions contextuelles permettent d'ajouter ou de supprimer des guillemets, des accolades d'interpolation et des symboles de signe dollar et de basculer facilement entre les représentations sur une seule ligne et sur plusieurs lignes.
  • Vous pouvez aligner ou indenter le contenu des chaînes brutes grâce aux nouvelles options de formatage de texte.
  • Amélioration de l'aide à la saisie lors de l'utilisation des touches Entrée, Supprimer ou Retour arrière.

Consultez cet article pour en savoir plus sur l'amélioration de la prise en charge des chaînes brutes.

Inspections pour les problèmes courants liés à Entity Framework

Inspections pour les problèmes courants liés à Entity Framework

Nous avons ajouté plusieurs nouvelles inspections, des correctifs rapides et des options de navigation contextuelle pour les problèmes courants survenant lorsque vous travaillez avec des bases de données avec un framework ORM (Object-Relational Mapping) comme Entity Framework.

  • En cas de problème « N+1 », vous disposez des inspections Possible multiple queries to the database for related entities (N+1 problem) et Possible multiple queries to the database (N+1 problem), d'un correctif rapide correspondant et de la navigation contextuelle avec des allers-retours afin d'examiner les sections de votre code dans lesquelles vous risquez de rencontrer un problème « N+1 ».
  • En plus de la détection des problèmes « N+1 », nous avons introduit une autre inspection utile lorsque vous travaillez avec Entity Framework : Query can return incomplete data for related entities. Un correctif rapide et la navigation contextuelle avec des allers-retours pour vous aider à analyser ce problème sont également disponibles.

Vous trouverez plus d'informations sur les nouvelles inspections liées à Entity Framework dans cet article.

Inspections pour travailler avec des fonctions locales

ReSharper 2023.2 introduit deux nouvelles inspections et les correctifs rapides correspondants afin d'améliorer la lisibilité du code avec les fonctions locales :

  • Une recommandation pour placer un paramètre return ou continue explicite avant les fonctions locales à la fin d'une méthode.
  • Une suggestion pour déplacer les fonctions locales à la fin d'une méthode ou d'un bloc et les séparer du code exécutable avec une instruction explicite return, continue, ou d'une autre instruction de déplacement de flux de contrôle.

Pour les cas dans lesquels vous ne voulez pas modifier le code ou n'avez pas la permission de le faire, ReSharper 2023.2 affiche un conseil interligne avec les instructions return; ou continue; placées avant les fonctions locales afin de vous aider à comprendre le code sans le modifier.

Lisez cet article pour plus de détails sur les nouvelles inspections.

Inspections pour les directives #nullable et annotations NRT

Inspections pour les directives #nullable et annotations NRT

Plusieurs nouvelles inspections sont disponibles pour les directives #nullable et les annotations NRT :

  • L'inspection Redundant nullable directive ;
  • Une inspection Unused nullable directive.
  • Une inspection pour vous alerter des cas dans lesquels les annotations de type de référence nullable (NRT) contredisent les attributs JetBrains.Annotations sur un membre de base.

Pour en savoir plus sur ces inspections, consultez cet article.

Navigation depuis les déclarations var améliorée

Navigation depuis les déclarations var améliorée

Désormais, toutes les actions de navigation (Go to…, Find Usages, etc.) suggèrent les types sous-jacents lors de la navigation depuis var pour les types de wrappers courants. Par exemple, ReSharper suggère la navigation vers Person lors de l'utilisation de l'action Go to declaration depuis le mot-clé var d'une variable ayant le type ImmutableArray<Person>?.

Vous trouverez plus d'informations dans cet article.

Constructeurs primaires Préversion de C# 12

La version 2023.2 de Rider apporte la prise en charge des constructeurs primaires pour les classes autres que record et les structs de la version preview de C# 12. Plusieurs inspections détectent les types pour lesquels l'initialisation peut être exprimée par de nouveaux constructeurs primaires et suggèrent l'application d'un correctif rapide pour réduire de façon significative les répétitions de code.

Parfois, l'initialisation du type doit être rendue plus formelle et ne peut plus être exprimée par un constructeur primaire. C'est pourquoi nous avons introduit deux actions contextuelles qui permettent d'annuler le remplacement des paramètres de constructeurs primaires par constructeurs et champs ordinaires.

Pour en apprendre plus sur ces fonctionnalités de constructeurs primaires et en découvrir d'autres en action, consultez cet article.

Prise en charge des valeurs de paramètres par défaut dans les lambdas

Prise en charge des valeurs de paramètres par défaut dans les lambdas Préversion de C# 12

Dans le cadre de notre travail d'intégration des mises à jour de C# 12, nous avons introduit la prise en charge des valeurs de paramètres par défaut dans les expressions lambdas. En plus de l'ensemble de messages d'avertissement standard associés à la reconnaissance de cette syntaxe, nous avons adapté une inspection existante, The parameter has the same default value, pour prendre en compte les valeurs des paramètres par défaut dans les lambdas. Vous trouverez plus d'informations à ce sujet ici.

Meilleure prise en charge des ressources remplaçables

ReSharper 2023.2 introduit deux nouvelles inspections de code conçues pour mieux contrôler la suppression d'un objet :

  • L'inspection Return of a variable captured by ‘using' statement vous prévient lorsque l'objet renvoyé est supprimé immédiatement.
  • L'inspection Return of a task produced by ‘using'-captured object identifie les scénarios dans lesquels une Task est produite par un objet capturé par une instruction using et renvoyée immédiatement.

Nous avons aussi amélioré la fonctionnalité Generate dispose pattern pour prendre en charge l'interface IAsyncDisposable et générer une méthode asynchrone pour libérer les ressources.

Vous trouverez plus de détails sur ces ajouts ici.

Meilleure prise en charge des discards C#

Plusieurs ajouts à la prise en charge des discards C# ont été faits pour l'analyse du code :

  • Il est désormais possible de vérifier rapidement les noms et les types des valeurs ignorées avec la fonctionnalité Push-to-Hint.
  • L'avertissement The _ name is typically reserved for local parameters without usages porte sur les variables et les paramètres nommés, tels que _, qui sont réellement utilisés. Ils semblent être des valeurs « ignorées », mais en fait c'est le contraire.
  • L'inspection Use discard assignment permet de remplacer une variable et un paramètre non utilisés par un discard.

Consultez cet article pour en savoir plus sur la prise en charge améliorée des discards.

Conseils d'insertion

Nouveaux conseils d'insertion pour une meilleure lisibilité du code

Conseils d'insertion avec noms de composant de tuple

Lorsque vous transférez une valeur à un argument de tuple ou un type de retour, C# permet d'ignorer les noms de composants. Cependant, en l'absence de noms, il devient plus difficile d'interpréter la signification de chaque composant sans examiner son type cible. Par exemple, de nombreux développeurs doivent rechercher où un tuple (null, false) est affecté pour comprendre ce que signifient ses composants.

C'est là que les conseils d'insertion peuvent vous aider ! ReSharper 2023.2 affiche des conseils d'insertion contenant des noms de composants de tuples lorsque ces noms ne sont pas déjà apparents au niveau de l'expression du composant, ce qui rend votre code beaucoup plus facile à lire et compréhensible.

Pour les composants null et par défaut, ReSharper 2023.2 affiche des conseils sur leurs types cibles même si le composant cible n'a pas de nom explicite. Il fait toutefois une exception pour les types chaîne et objet, car ces derniers sont généralement peu informatifs.

Les noms améliorent également la lisibilité des modèles de déconstruction pour lesquels le nom explicite est connu s par la méthode Deconstruct ou par les composants du tuple source. Ces conseils ont été développés pour vous fournir davantage de contexte lorsqu'un modèle ne contient pas suffisamment de données pour comprendre ce qui est mis en correspondance, comme dans value is ({ }, true, null).

Meilleure prise en charge des directives #pragma warning

Meilleure prise en charge des directives #pragma warning

Les directives Pragma permettent de désactiver ou de restaurer facilement les avertissements du compilateur en fonction de leurs identifiants. Cependant, si ces ID sont un excellent moyen de communiquer avec le compilateur, ils peuvent être difficiles à comprendre. Sans connaissances approfondies, il n'est pas évident de savoir à quoi correspond l'identifiant CS0168 ou CS0618, et ce qui nécessite une attention particulière.

Optimisation pour LINQ

Optimisation pour LINQ

Les requêtes LINQ sont souvent complexes et impliquent de multiples transformations et projections. Le débogage de requêtes LINQ complexes peut être chronophage, surtout pour les grands ensembles de données. Afin de vous aider à inspecter facilement la sortie de chacune des étapes de la requête, ReSharper affiche désormais les résultats intermédiaires sous forme de conseils d'insertion durant le débogage.

Les éléments de l'éditeur qui affichent les résultats intermédiaires vous aident à détecter rapidement les valeurs inattendues ou transformations incorrectes.

Prise en charge de C++

Safe Delete

Safe Delete

ReSharper C++ introduit la refactorisation Safe Delete, qui permet de supprimer des symboles dans le code source en toute sécurité. Cette refactorisation est disponible pour les classes, les fonctions, les variables, les énumérateurs, les espaces de noms et même les concepts.

Avant de supprimer un symbole, ReSharper C++ recherche ses occurrences et fournit une prévisualisation des modifications du code afin d'éviter toute suppression non intentionnelle. Si vous essayez de supprimer une entité complexe comme une classe ou un espace de nom, ReSharper C++ vérifiera récursivement les utilisations de tous ses membres.

Davantage de fonctionnalités C++20 et C++23

Davantage de fonctionnalités C++20 et C++23

Cette nouvelle version introduit la prise en charge de plusieurs nouvelles fonctionnalités du langage, notamment if consteval, les modules de bibliothèque standard C++23, l'attribut [[no_unique_address]] et les opérateurs statiques operator()/operator[].

Nouveautés de ReSharper C++ 2023.2

Formatage du code

Optimisation pour LINQ

Formatage de chaînage d'appels d'API

ReSharper 2023.2 introduit deux nouvelles options de formatage du code C# qui améliorent la lisibilité des appels de méthode chaînés.

La première option de formatage du code permet de contrôler le placement d'un saut de ligne avant le premier appel de méthode. La seconde option concerne les cas dans lesquels un appel de méthode et un appel de propriété sont mélangés et détermine si un saut de ligne est nécessaire après l'appel de propriété.

AI Assistant Accès limité

L'AI Assistant n'est pas directement fourni avec ReSharper et doit être installé séparément. L'accès à la fonctionnalité AI Assistant est limité pour le moment et nous avons mis en place une liste d'attente.

Vous trouverez plus d'informations sur l'AI Assistant et la façon de l'installer avec Toolbox App ou le programme d'installation de dotUltimate dans notre aide web.

Chat avec l'AI Assistant

Chat avec l'AI Assistant

Par défaut, l'AI Assistant tient compte de votre environnement de développement : les langages de programmation, frameworks, bibliothèques et technologies utilisés dans la solution. L'intelligence artificielle est ainsi en mesure de fournir des réponses plus précises et pertinentes à vos questions.

L'option Smart chat permet à l'AI Assistant de référencer des fichiers spécifiques et des symboles, d'extraire des fragments de code ou les dernières modifications, et de rechercher les utilisations de méthodes spécifiques. Ainsi, ses suggestions sont encore plus précises.

Actions contextuelles

Actions contextuelles

Avec l'installation du plugin AI Assistant, les actions contextuelles de ReSharper offrent plusieurs options générées par IA. L'AI Assistant peut vous aider pour les tâches suivantes :

  • Expliquer le code sélectionné
  • Identifier les problèmes potentiels
  • Fournir du code pour les méthodes non implémentées
  • Générer de la documentation XML

Débogueur prédictif Bêta Visual Studio 2022

Le mode débogage prédictif de ReSharper 2023.2 peut prévoir tous les états possibles déclenchés par l'exécution d'un programme sans avoir à l'exécuter réellement, ce qui lui permet :

  • D'afficher les valeurs attendues des variables.
  • De « désactiver » visuellement les parties du programme qui ne seront pas exécutées.
  • D'identifier les cas dans lesquels la poursuite de l'exécution du programme entraînera une exception.

Grace au débogueur prédictif, vous bénéficiez d'une compréhension plus avancée de l'exécution de votre programme. Il vous donne aussi la possibilité d'essayer différentes valeurs et de déboguer votre code sans avoir à redémarrer le processus de débogage à chaque modification.

Pour activer le débogueur prédictif, allez dans ReSharper | Options | Tools | Debugger | Editor Integration | Predictive debugger | Show predicted values (beta).

En savoir plus

Ce débogueur est actuellement en phase Bêta, vos retours nous aideront donc à le faire évoluer. N'hésitez pas à nous signaler les bugs que vous rencontrez via notre outil de suivi et à nous faire part de vos suggestions ou demandes.

Décompilateur

Comparaison d'assemblies

ReSharper 2023.2 permet d'obtenir une comparaison détaillée de deux assemblies. Cette fonctionnalité est particulièrement utile pour examiner les différences entre les deux versions d'un assembly donné et rechercher les éventuelles vulnérabilités qui peuvent avoir été introduites dans une version plus récente.

Pour comparer les assemblies, cliquez sur Compare Two Assemblies dans la fenêtre d'outils Assembly Explorer. Vous pouvez comparer les applications à fichier unique et les fichiers .exe ou .dll.

Cliquez ici pour en savoir plus sur cette fonctionnalité.

Performances

Avec ReSharper 2023.2, nous avons revu notre approche de la mise en cache des données requises par l'IDE pour faire fonctionner ses systèmes. Cette révision, dont l'efficacité a été confirmée par une myriade de tests des performances, a permis de réduire la consommation d'espace disque de façon significative pour chaque solution que vous ouvrez. Dans la pratique, cela réduit le temps consacré aux entrées/sorties de disque et accélère le chargement des solutions.

Un autre changement a permis d'accélérer le chargement de la solution : la refactorisation de la logique de construction des composants internes de ReSharper. Cliquez ici pour en savoir plus.

Autres améliorations

Analyse Dynamique de Programme

  • Avant, il arrivait que l'analyse dynamique de programme inclue par erreur le temps de pause pendant le débogage dans le temps d'exécution, ce qui créait des faux positifs dans la base de données. Ce problème est résolu dans la version 2023.2.
  • Avant, l'analyse dynamique de programme mettait en évidence de gros blocs de code si la pile d'appels correspondante contenait des allocations de mémoire à des fonctions lambda. La mise en évidence est désormais plus granulaire.
Télécharger

Essai gratuit sur 30 jours disponible