ReSharper 2022.2 apporte la prise en charge de nouvelles fonctionnalités de C# 11, telles que les membres requis, les opérateurs checked définis par l'utilisateur, les chaînes brutes et les modèles de listes. Nous avons aussi considérablement optimisé la consommation de la mémoire de l'analyse à l'échelle de la solution. Par ailleurs, cette version introduit une fonctionnalité Virtual Formatter qui permet d'afficher votre code au format voulu sans avoir à reformater le code source sur le disque, et un outil Disk Cleanup pour supprimer les fichiers temporaires générés par ReSharper pendant qu'il travaille sur votre code.
Essai gratuit sur 30 jours disponible
Cette version fournit la prise en charge de plusieurs fonctionnalités supplémentaire de la version preview de C# 11.
Avec C# 11, les types class
, struct
et record
peuvent maintenant déclarer une liste de membres requis. Il s'agit de la liste de toutes les propriétés et de tous les champs considérés comme requis et qui doivent être initialisés lors de l'initialisation de l'instance d'un type. Ces listes sont automatiquement héritées des types de base et contribuent à offrir une expérience utilisateur fluide et à réduire la quantité de code standard répétitif.
En plus de reconnaître le mot-clé required
pour les membres de type class
, struct
ou record
, ReSharper assure également la prise en charge du mot-clé required
:
required
a été ajouté à Modifiers order sur la page ReSharper | Options | Code Editing | C# | Syntax Style
. Nous avons ajouté un nouveau correctif rapide Add initializer for required members pour les cas dans lesquels vous avez créé un objet de type mais n'avez pas encore initialisé les membres. Cela génère automatiquement tous les membres « required » manquants pour votre objet et il ne vous reste plus qu'à remplir les valeurs des membres avec des données pertinentes.
Les opérateurs checked
définis par l'utilisateur aident les développeurs à créer des opérateurs définis par l'utilisateur qui agissent sur les types qui permettent le débordement arithmétique. ReSharper affiche l'intégralité des erreurs et des avertissements du compilateur. Afin d'assurer une prise en charge complète des opérateurs checked
définis par l'utilisateur, nous avons ajouté à ReSharper deux inspections supplémentaires et une action contextuelle.
Nous avons mis à jour l'inspection Unchecked/checked context is redundant pour prendre en compte les opérateurs checked
lorsqu'ils sont utilisés dans ce contexte.
Si vous avez un ensemble d'opérateurs définis par l'utilisateur et que certains d'entre eux ont déjà une version checked
, ReSharper vous aidera à propager les opérateurs checked
aux autres de ces opérateurs. Une nouvelle inspection, The operator does not have a matching checked
operator while other operators do, signale les opérateurs qui ne disposent pas encore d'un opérateur « checked » et propose un correctif rapide permettant de générer les versions checked
automatiquement.
Si vous n'avez pas encore utilisé les opérateurs checked
dans votre base de code mais souhaitez commencer àles y ajouter, vous apprécierez la nouvelle action contextuelle Create matching checked operator. Elle est disponible pour tous les opérateurs définis par l'utilisateur et génère une version checked d'un opérateur en un clic, directement depuis le menu contextuel ouvert par Alt+Entrée.
C# 11 améliore la possibilité d'intégrer d'autres langages ou formats de texte dans le code C# en introduisant le concept de chaînes « brutes ».
ReSharper assure une prise en charge basique des chaînes « brutes », ce qui inclut les erreurs de compilateur, l'analyse correcte et le surlignage en couleur de la syntaxe """
, les paires de guillemets doubles et les emplacements réservés dans les chaînes interpolées (syntaxe {{...}}
).
C# 11 continue de rendre davantage de modèles disponibles dans le langage. Cette fois, C# permet les opérations d'appariement pour les structures de type liste, comme les tableaux, les chaînes et les collections telles que
List<T>
.
ReSharper 2022.2 prend intégralement en charge les modèles de listes avec la vérification d'erreurs, la saisie semi-automatique et l'analyse du code. Nous travaillons sur de nouvelles inspections de code qui permettront de suggérer l'utilisation de modèles de listes dans le code existant et des actions de refactorisation supplémentaires.
>>>
), Cela inclut la prise en charge de la surcharge de l'opérateur >>>
défini par l'utilisateur. Span<char>
en remplacement des instances de chaînes, car C# 11 permet de comparer directement les constantes de chaînes avec des valeurs de type Span<char>
et ReadOnlySpan<char>
. Cette version a été l'occasion d'optimiser l'utilisation de la mémoire de ReSharper lorsque que le mode Solution-Wide Analysis est activé, aussi bien en termes de trafic de la mémoire (nombre d'allocations de mémoire) que de consommation.
Le moteur d'analyse à l'échelle de la solution utilise la mémoire pour stocker la liste des problèmes dans la solution et les informations d'utilisation des types/membres, afin d'effectuer des rapports d'utilisation portant sur l'ensemble de la solution (inspections de code telles que « le membre public n'est jamais utilisé »). Les données d'utilisation des types et des membres doivent être constamment mises à jour au fur et à mesure que le code est modifié et ne peuvent pas être déchargées sur le disque. Si votre solution contient de nombreux types et membres de type, cela risque d'entraîner la consommation d'un volume de mémoire important. Nous avons examiné les données stockées en mémoire et identifié des modèles permettant de les dédupliquer/normaliser. Nous avons également utilisé des types de collections spécialisés pour réduire davantage l'utilisation de la mémoire. Ces optimisations ont permis de réduire de 5 à 10 fois la consommation de mémoire et d'accélérer le chargement de l'analyse à l'échelle de la solution.
.NET 6 a introduit de nouveaux modèles de projets qui utilisent des instructions C# 9 de niveau supérieur. Les instructions de haut niveau simplifient la déclaration d'une classe Program
ou d'une méthode public static void Main(string[] args)
. Mais parfois il est nécessaire ou préférable d'utiliser une classe de démarrage Program
explicite. ReSharper 2022.2 fournit une nouvelle action contextuelle To explicit 'Program' class pour effectuer des conversions dans l'ancien style.
Si vous avez déjà une classe de démarrage Program
et souhaitez migrer vers les instructions de haut niveau, utilisez la nouvelle action contextuelle Convert to top-level code.
INotifyPropertyChanged
Dans cette version, nous avons remanié la prise en charge de INotifyPropertyChanged
. Elle ne dépend plus d'annotations externes pour détecter les API INotifyPropertyChanged
couramment utilisées, ce qui permet une prose en charge automatique d'un plus grand nombre de frameworks MVVM et de classes de base INotifyPropertyChanged
. Nous utilisons maintenant la méthode SetField
dont la syntaxe est plus concise pour les notifications INotifyPropertyChanged
.
Dorénavant, il est aussi possible d'ajouter des notifications property change pour l'ensemble des propriétés dans le type ou le fichier.
Pour améliorer l'accessibilité des refactorisations, nous avons identifié les refactorisations les plus utilisées et ajouté au menu disponible via Alt+Entrée des actions contextuelles pertinentes qui s'affichent en fonction du contexte actuel.
Désormais, l'action contextuelle Extract method est également appelée avec Alt+Entrée pour le fragment de code sélectionné.
Les refactorisations Change Signature, Transform Parameters, Convert to extension method et Convert Property To Method sont désormais toutes disponibles en tant qu'actions contextuelles pour les signatures de membres.
nameof
ReSharper 2022.2 reconnaît les enregistrements de DependencyProperty
dans les projets WPF et suggère l'utilisation d'un opérateur nameof
pour capturer le nom de propriété CLR correspondant. Les modèles dynamiques intégrés ont également été mis à jour pour émettre nameof
à la place de littéraux de chaîne.
Souvent, ReSharper ne peut pas identifier la signification spéciale d'un littéral de chaîne utilisé dans votre code pour spécifier le nom d'une entité de code comme un nom de membre ou de type. Pour ces cas, nous avons introduit une nouvelle action contextuelle Capture element name pour les littéraux de chaîne avec identifiants, qui permet de faire référence à une entité de code dans le contexte du littéral de chaîne.
Les correctifs rapides provenant des modèles Structural Search And Replace (SSR) peuvent désormais être appliqués au niveau d'un fichier, d'un dossier, d'un projet ou de l'ensemble d'une solution. Cela s'applique aux modèles personnalisés créés sur la page ReSharper | Options | Code Inspection | Custom Patterns
, aux inspections de code intégrées de ReSharper et aux correctifs correspondants basés sur le SSR.
ReSharper 2022.2 peut désormais détecter certains modèles d'affectation dans votre code et suggérer du code C# plus idiomatique grâce à la reconnaissance de schémas.
ReSharper 2022.2 est désormais capable de remplacer is
dans les expressions ?:
par des modèlesas
plus concis dans les expressions??
, ce qui permet d'éliminer une variable temporaire.
Nous avons introduit une fonctionnalité Virtual Formatter qui permet de voir votre code au format voulu sans avoir à reformater le code source sur le disque. Par exemple, il est désormais possible d'aligner virtuellement les paramètres en colonnes ou d'augmenter les indentations. Les objectifs de cette fonctionnalité sont d'améliorer la lisibilité et la maintenabilité du code et de le rendre plus accessible pour les développeurs malvoyants ou neurodivergents. Pour activer le Virtual Formatter avec des paramètres prédéfinis, allez dans ReSharper | Options | Environment | Inlay Hints | General
. Si vous souhaitez aller plus loin dans la personnalisation du formatage et définir vos propres paramètres, cochez la case Use dedicated Virtual Formatter style settings et sélectionnez C#.
Il est désormais possible de supprimer les fichiers temporaires générés par ReSharper pendant qu'il travaille sur votre code. Nous avons ajouté une nouvelle page dans la section Options sur laquelle vous pouvez :
Comme beaucoup d'entre vous l'ont remarqué, la prise en charge de JavaScript et de TypeScript dans ReSharper est obsolète et lente. Avec l'implémentation actuelle, il est difficile de suivre les changements de langage de TS et de prendre en charge les nouvelles versions suffisamment rapidement. Après avoir longuement pesé le pour et le contre, nous avons décidé de suspendre la prise en charge de JS et de TS. Par conséquent, nous avons désactivé la prise en charge par défaut de TS/JS dans cette version. Si vous souhaitez continuer à l'utiliser, vous pouvez l'activer dans : ReSharper | Options | Environment | Products & Features | case à cocher « JavaScript and TypeScript »
.
ReSharper C++ inaugure des conseils d'insertion spécifiques à Blueprint et vous offre une vision d'ensemble du rendu de votre code :
UFunction
a des implémentations dans les Blueprints et pouvez en répertorier toutes les instances. UProperty
, y compris si elle a été remplacée, et savoir quelle valeur est définie dans le fichier Blueprint. Nous avons également ajouté deux nouvelles inspections qui vous signalent toute incohérence entre les spécificateurs de fonctions relatifs aux Blueprints utilisés dans le code et les Blueprints eux-mêmes.
ReSharper peut désormais détecter si le package StyleCop.Analyzers est référencé par un projet et lire ses paramètres depuis les fichiers stylecop.json
et .ruleset
. Les en-têtes de fichiers et les paramètres d'indentation sont obtenus depuis stylecop.json
, tandis que les règles StyleCop s'appliquent selon la configuration active du fichier .ruleset
.
ngen
ou R2R
s'affichent à côté du nom de chaque assembly. Essai gratuit sur 30 jours disponible