ReSharper 2021.2 propose de nouvelles inspections avec des correctifs rapides pour l'analyse du code C# et la prise en charge des types de référence nullables. De nombreuses fonctionnalités disponibles pour les fichiers de code écrits manuellement le sont désormais également pour les fichiers sources générés. ReSharper 2021.2 prend également en charge les applications à fichier unique dans Assembly Explorer, améliore la gestion des problèmes dans l'analyse dynamique de programme (DPA) et propose des règles de dénomination avancées pour les enregistrements, les méthodes d'extension et les variables catch.
Essai gratuit sur 30 jours disponible
Utilisez-vous des variables temporaires pour échanger les valeurs des variables ? Il y a maintenant un moyen plus simple et efficace pour y parvenir ! ReSharper 2021.2 vous permet de moderniser votre code avec le nouveau correctif Swap via deconstruction !
Réduisez le nombre d'allocations dans votre code et augmentez la vitesse de traitement ! Remplacez la création de tableaux vides avec Array.Empty<T>
.
Si vous allouez un nouveau Type[0]
, ReSharper suggérera d'utiliser Type.EmptyTypes
pour optimiser l'utilisation de la mémoire.
Si des EventArgs
spécifiques ne sont pas nécessaires, ReSharper vous indiquera que vous pouvez remplacer new EventArgs()
par EventArgs.Empty
.
Autres améliorations :
generated_code
de .editorconfig
pour marquer les fichiers ou les dossiers comme du code généré et les exclure du traitement. switch
et les expressions switch
importantes et complexes. Avez-vous beaucoup de suppressions d'avertissements de type nullable dans votre base de code après avoir activé les types de référence nullables ?
ReSharper indique les suppressions (!
) qui ne sont plus nécessaires et qui peuvent être supprimées en toute sécurité.
Une nouvelle action contextuelle vous permet de rechercher toutes les suppressions d'avertissements de type nullable dans la portée. À partir de la fenêtre d'outils Find Results, vous pouvez alors réévaluer si les suppressions sont nécessaires ou non.
Nous avons introduit une nouvelle refactorisation pour modifier les valeurs nullables ! Elle est disponible via un correctif rapide, avec l'action Refactor This ou une refactorisation in-place lors de l'ajout ou de la suppression de l'annotation nullable (?
).
ReSharper mettra à jour les annotations de nullabilité et suggèrera d'appliquer les modifications dans l'ensemble de votre base de code.
Plusieurs nouvelles inspections avec des correctifs rapides correspondants sont disponibles lorsque vous utilisez les attributs JetBrains.Annotations et que les types de référence nullables sont activés.
Mettez à jour les attributs de JetBrains.Annotations vers la syntaxe NRT et les attributs pris en charge par le compilateur ! Par exemple, ReSharper peut mettre à jour [CanBeNull] string
par string?
.
ReSharper vous informera des attributs JetBrains.Annotations redondants, tels que [NotNull] string
ou [ItemCanBeNull] List<string?>
. Et bien entendu, il fournira un correctif rapide pour mettre à jour votre code.
Lorsque la syntaxe annotation de type n'est pas autorisée, une nouvelle inspection avec un correctif rapide ajoute les annotations prises en charge par le compilateur, par exemple :
[JetBrains.Annotations.NotNull] T param
en [DisallowNull] T param
(where T: class?
) [JetBrains.Annotations.CanBeNull] T
en [System.Diagnostics.MaybeNull] T
(en C# 8, où la syntaxeT?
n'est pas autorisée) ReSharper ajoute de nouvelles inspections et des correctifs rapides pour vous aider à utiliser 4 annotations prises en charge par le compilateur, telles que [DisallowNull]
, [AllowNull]
, [MaybeNull]
et [NotNull]
.
Une nouvelle inspection détecte les annotations redondantes du compilateur, comme lorsque [AllowNull]
est appliqué à un type nullable, et un correctif rapide les supprime.
Lorsque la syntaxe du type de référence nullable peut être utilisée, ReSharper suggère cette option.
D'autres améliorations méritent également d'être soulignées :
Apprenez-en plus dans cet article de blog : What's New for C# Nullable Reference Types in ReSharper and Rider 2021.2.
Les générateurs de code source peuvent être utilisés pour réduire les tâches de développement fastidieuses et répétitives et pour générer du code au moment de la compilation. Dans ReSharper 2021.2, de nombreuses fonctionnalités disponibles pour les fichiers de code écrits manuellement le sont également pour les fichiers sources générés. Nous avons amélioré l'assistance de l'éditeur, optimisé le débogueur et ajouté la prise en charge de l'analyse des erreurs à l'échelle de la solution (SWEA) et des refactorisations.
Pour le code généré, les avertissements et les erreurs sont affichés dans l'éditeur et dans la Marker Bar.
L'analyse des erreurs à l'échelle de la solution (SWEA) inclut désormais les fichiers générés par les générateurs de code source. Si une erreur se produit dans un fichier généré dans votre projet, vous pourrez la repérer immédiatement et y accéder.
Vous pouvez activer ce comportement à l'aide de la nouvelle option d'inclusion des fichiers sources générés, qui est activée par défaut et située dans ReSharper | Options | Code Inspection | Settings | Enable solution-wide analysis.
Les refactorisations peuvent désormais être déclenchées à partir de fichiers sources générés. Utilisez la refactorisation Rename pour renommer une propriété générée. ReSharper renommera également le symbole correspondant dans le code écrit manuellement !
De même, Change Signature vous permet de vérifier si le code qui est généré après la modification peut toujours être compilé.
Vous avez également la possibilité d'utiliser Find Usages, de rechercher des éléments hérités, de naviguer du code généré au code écrit manuellement (avec Ctrl+Clic et Navigate To) et plus encore.
La mise en évidence des éléments sémantiques est activée afin que les membres de la classe tels que les événements, les champs et les propriétés, soient mis en évidence correctement. Tous les conseils d'insertion sont également affichés.
Des conseils de données propres à ReSharper sont affichés pendant le débogage. Cela permet notamment une prise en charge avancée du débogage avec la fonction de recherche et la mise en évidence des propriétés.
ReSharper prend désormais en charge le code généré par les générateurs de code source en VB.NET.
Dans la version précédente, nous avons mis en place la prise en charge des modèles de route ASP.NET. Dans la version 2021.2, nous avons continué dans cette direction et apportons une meilleure prise en charge des chaînes URI HttpClient
:
HttpClient
, la saisie semi-automatique du code suggère tous les URI qui peuvent être résolus en actions dans les contrôleurs annotés avec les attributs [Route]
, [Http{Method}]
ou [AcceptVerbs]
. Plusieurs fonctionnalités utiles ont été ajoutées pour la navigation :
Il peut parfois être utile de spécifier des règles de dénomination avancées pour les enregistrements, les méthodes d'extension et les variables Catch. Avec cette version, il est maintenant possible de configurer ces règles.
Si vous préférez utiliser un style d'accolade (indentation) Pico, nous avons ce qu'il vous faut. Le style Pico a été ajouté comme option dans l'onglet Brace Layout sur la page ReSharper | Options | Code Editing | C# | Formatting Style | Braces Layout.
Nous avons modifié les préférences de mise en forme par défaut dans quelques cas pour les aligner sur les valeurs par défaut de Visual Studio.
Avec la nouvelle refactorisation Inline Function, vous pouvez rapidement remplacer un appel de fonction par le corps de la fonction. ReSharper C++ effectue les modifications nécessaires, gère les conflits de noms et reformate le code résultant de la refactorisation.
ReSharper C++ 2021.2 introduit des conseils d'insertion pour les conversions de type implicites qui peuvent causer des pertes de données ou des problèmes de performance. ReSharper C++ indique où les conversions implicites se produisent dans votre code.
L'analyse dynamique de programme (DPA) enregistre désormais deux valeurs pour chaque incident : la valeur maximale et la valeur actuelle. Cela permet d'éviter les faux négatifs. Auparavant, il pouvait arriver que des problèmes passent sous le seuil et disparaissent de la liste, non pas parce qu'ils étaient résolus, mais parce que leurs conditions de lancement avaient changé (exécution du programme ayant duré moins longtemps, fonctionnalité requise n'ayant pas été exécutée, etc.)
The embedded decompiler can now decompile single-file apps. Il prend en charge les formats de fichier unique utilisés dans les SDK .NET Core 3.1, .NET 5 et .NET 6 à venir. Il vous permet également de parcourir les assemblies groupés à l'intérieur d'une application à fichier unique, comme vous le faites habituellement.
Dans cette version, nous avons continué à améliorer les moyens d'analyser l'allocation de mémoire. Deux nouveaux onglets ont été ajoutés à la vue Memory Allocation :
Il est désormais possible de profiler des applications Windows natives. Lorsque vous démarrez une session de profilage, vous pouvez télécharger des fichiers de symboles source natifs à partir de serveurs distants. Le profilage natif est uniquement disponible pour le profilage de type chronologique (Timeline).
Les développeurs qui utilisent Razor et travaillent sur des vues de grande taille peuvent désactiver l'assistance et les suggestions automatiques, fortement consommatrices en CPU, si leur éditeur commence à être lent. Vous trouverez les paramètres ici :ReSharper | Options | Environment | Editor | Behavior | Razor | Allow CPU-intensive typing assist.
Nous avons apporté un changement fondamental à l'outil InspectCode. À partir de la v2021.2, InspectCode restaure automatiquement les packages NuGet et compile une solution avant de commencer son analyse. Si ce comportement est indésirable, vous pouvez utiliser la commande --no-build
pour désactiver la restauration des packages NuGet et la compilation de la solution.
Essai gratuit sur 30 jours disponible