ReSharper 2023.1 améliore la prise en charge de C#, notamment avec un ensemble d'inspections pour optimiser et accélérer votre travail avec différents types de collections, et des solutions plus modulables d'introduction de contrôles de valeur null dans votre code. Ce build introduit également des mises à jour pour les modules C++20, le premier lot de prise en charge des fonctionnalités C++23, ainsi que les aperçus de macro-substitution et le suivi d'appels pour C++. Enfin, l'expérience utilisateur des tests unitaires et du nettoyage du code a également été améliorée.
Essai gratuit sur 30 jours disponible
Nous avons introduit un ensemble d'inspections accompagnées de correctifs rapides pour optimiser et accélérer votre travail avec différents types de collections en réduisant le nombre de recherches dans les collections pour les raisons suivantes :
Contains(item)
avant d'ajouter l'élément dans HashSet
ou toute autre collection implémentant les interfaces ISet
. ContainsKey(key)
avant d'ajouter l'élément dans Dictionary
ou toute autre collection implémentant l'interface IDictionary
. TryAdd(key, value)
pour les collections Dictionary
ou les collections héritées de Dictionary
lorsque possible. TryGetValue(key, out value)
pour les collections IDictionary
lorsque possible. Nous avons fourni le nouveau paramètre Syntax style pour vous aider à appliquer un style cohérent aux vérifications de not null
dans les modèles. Cela comprend deux options : syntaxe de modèle récursif vide { }
et modèle de négation not null
, ce dernier étant utilisé par défaut. Vous pouvez moduler ce comportement à volonté sur la page ReSharper | Options | Code Editing | C# | Syntax Style.
L'utilisation du modèle « not null » a pour inconvénient qu'il ne permet pas d'introduire les noms de variable pour la valeur vérifiée, comme cela est le cas avec le modèle récursif { LastName: { } lastName }
. Nous avons ajouté l'action contextuelle Add pattern variable au modèle not null
pour rechercher les expressions accédant à la même valeur (dans la mesure où nous introduisons un nom de variable) et les remplacer toutes par le nouveau nom, afin de consolider tous les accès à la même valeur.
Le SDK .NET 6.0 a introduit une nouvelle API pour la vérification de null
: ArgumentNullException.ThrowIfNull
. Notre moteur d'analyse de code reconnaît cette approche de vérification depuis son introduction, mais il n'était pas possible d'utiliser cette API comme style par défaut pour les vérifications de null
produites par ReSharper. Dans la version 2023.1, nous avons ajouté le modèle ArgumentNullException.ThrowIfNull
à ReSharper | Options | Code Editing | C# | Null checking.
Si vous recourez de façon intensive au filtrage par motif des propriétés, essayez notre nouvelle inspection incluant un correctif rapide pour extraire les éléments communs de plusieurs schémas de propriétés lorsqu'ils sont utilisés dans le même flux de code. Le code généré par le correctif rapide Extract common property pattern permet de réduire la répétition du code en déplaçant les modèles de propriétés communs vers un modèle de niveau supplémentaire.
Les développeurs C# s'appuient souvent sur la directive #region
et le pliage de code dans l'IDE pour structurer leur code. La refactorisation peut laisser certaines entrées #region
vides, ce qui risque de prêter à confusion lorsque le code est réduit. Cette nouvelle inspection de code permet d'identifier les entrées #region
vides à l'état réduit et de nettoyer le code avec le correctif rapide correspondant.
span.SequenceEqual("str")
L'analyse de code inclut une inspection de code qui propose le remplacement de span.SequenceEqual("stringLiteral")
par span is "stringLiteral"
, ce qui donne une syntaxe C# plus pratique que l'appel d'une fonction.
Les expressions lambda du code C# peuvent avoir des paramètres à typage implicite et des types de retour déduits. Toutefois, des types explicites peuvent être ajoutés pour clarifier le code dans les scénarios complexes de résolution de surcharge. À partir de C# 11, il est également possible d'ajouter une spécification de type de retour pour les expressions lambda. Pour cette raison, nous avons introduit l'action contextuelle Insert return type specification dans ReSharper 2023.1. Cette action peut s'appliquer à toutes les portées, ce qui inclut les méthodes, la classe, le fichier, le projet ou l'intégralité de la solution, pour ce faire.
Les modèles C# or/and/not
sont utiles pour les vérifications de valeurs compactes, mais peuvent être moins facilement identifiables que les expressions traditionnelles, telles que ||/&&/!
. Ils peuvent également être à l'origine de bugs difficile à trouver si des parenthèses manquent. Pour faciliter cela, nous avons introduit une nouvelle analyse de code dans la version 2023.1 qui vous signale les vérifications « caduques » dans les modèles complexes.
Nous poursuivons l'amélioration de la prise en charge des modèles de liste C# 11. La nouvelle action contextuelle Convert to list pattern permet de transformer les vérifications de longueur de collection en syntaxe de modèle de liste. Cela fonctionne à condition que la vérification de longueur de la collection puisse être réalisée.
Lors du survol d'une macro, vous voyez désormais un aperçu de sa version étendue dans l'infobulle, avec la mise en évidence complète des éléments de syntaxe et la bonne mise en forme du code. Vous pouvez toujours utiliser l'action contextuelle Substitute macro call pour vérifier la version étendue de la macro directement dans le code, mais l'aperçu instantané simplifie la manipulation des macros. De plus, la fenêtre contextuelle Quick Documentation (Ctrl+Maj+F1) permet de cliquer sur une entité depuis l'aperçu de la substitution pour consulter sa documentation.
La fonctionnalité Call tracking est enfin disponible dans ReSharper C++ ! Il est désormais possible d'afficher les chaînes d'appels et de les parcourir dans la hiérarchie des appels entrants. Dans la fenêtre des résultats de suivi d'appels, vous pouvez double-cliquer sur l'entrée de la hiérarchie pour accéder à l'appel correspondant dans l'éditeur ou étendre l'un des nœuds pour vérifier ses appels entrants.
ReSharper 2023.1 introduit une boîte de dialogue de mise à jour remaniée qui contient des notes sur les modifications apportées au dernier build disponible, de façon à vous permettre de télécharger ou d'ignorer la mise à jour en connaissance de cause.
Reformat inactive preprocessor branches in file est un nouveau type de tâche introduit dans ReSharper 2023.1. Cette tâche vous permet de reformater les branches de préprocesseurs inactifs. Cela doit s'appliquer uniquement à l'ensemble du fichier et fonctionne exclusivement avec les sources C#.
Cette tâche ne permet pas de reformater le code masqué derrière une directive de préprocesseur #if
qui a toujours la valeur false. Les deux exemples les plus évidents de cette limitation sont les constructions #if false ... #endif
et #define A #if !A ... #endif
.
Les filtres de recherche de texte appliqués aux arborescences de tests unitaires, aussi bien dans les fenêtres d'outils Session que Explorer, sont désormais pris en compte lors de l'exécution de tests au moyen des boutons Run de la barre d'outils. Seuls les nœuds qui correspondent aux critères de recherche restent dans la liste et sont exécutés.
Nous avons amélioré la façon dont ReSharper gère les changements de nom des fichiers dans un projet. À partir de ce build, lorsque vous renommez un fichier dans votre solution, une boîte de dialogue s'affiche pour renommer les symboles concernés (classes, interfaces, etc.) en fonction de la modification.
Tant que les API qu'ils référencent restent valides et inchangées, les plugins ReSharper migrent désormais de façon automatique d'une version à l'autre.
Un vérificateur d'API intégré vérifie les plugins installés pour la compatibilité binaire et fait migrer les viables. Les auteurs de plugin recevront également des notifications automatiques via JetBrains Marketplace lorsque les API utilisées par leurs plugins ne sont plus présentes dans le SDK.
Étant donné la faible demande pour CSS dans ReSharper, nous avons de plus en plus de mal à justifier la mise à jour prioritaire vers la dernière version de ce langage. Par conséquent, nous avons décidé de mettre la prise en charge de CSS en pause jusqu'à ce que nous trouvions une meilleure solution de prise en charge de ce langage.
À partir de ReSharper 2023.1, la prise en charge de CSS sera désactivée par défaut. Si vous souhaitez continuer d'utiliser le langage, vous pouvez l'activer dans : ReSharper | Options | Environment | Products & Features | case à cocher « CSS ».
ReSharper et les outils .NET prennent actuellement en charge 7 versions majeures de Visual Studio, de 2010 jusqu'à la plus récente, 2022. À partir de la version 2023.1, nous avons réduit cette liste en abandonnant la prise en charge des deux versions les plus anciennes, Visual Studio 2010 et Visual Studio 2012.
Essai gratuit sur 30 jours disponible