Nouveautés de ReSharper 2022.3

ReSharper 2022.3 apporte la prise en charge basique des dernières fonctionnalités de C# 11, notamment des littéraux UTF-8, des types locaux de fichiers, des membres virtuels statiques et de la correspondance de modèles sur les spans. Pour cette version, nous avons retravaillé la mise en évidence du code, introduit la détection des dépendances vulnérables pour les packages NuGet et permis l'importation et l'exportation des diagrammes de dépendances de types et de projets au format GraphML. Cette version fournit également une prise en charge préliminaire de Microsoft Visual Studio sur ARM64.

Télécharger

Essai gratuit sur 30 jours disponible

C# 11

Nous sommes en train de finaliser la prise en charge de base des dernières fonctionnalités de C# 11 :

Littéraux UTF-8

Nous avons ajouté la prise en charge basique des littéraux UTF-8. L'analyse de code suggère maintenant d'utiliser le suffixe u8 pour un littéral au lieu de la méthode System.Text.Encoding.UTF8.GetBytes() ou d'un tableau d'octets avec des symboles UTF8 corrects. En outre, un ensemble d'avertissements et d'erreurs de compilateur a été ajouté pour les littéraux UTF-8.

Types de fichiers locaux

La prise en charge des types de fichiers locaux inclut la compréhension de la nouvelle syntaxe, un modificateur d'accessibilité file pour les types, ainsi que des avertissements et des erreurs de compilateur avec des suggestions de correctifs rapides, tels que Move class to outer scope lorsque le modificateur file est spécifié pour une classe imbriquée. Vous trouverez aussi une action contextuelle très pratique pour convertir un type général en type de fichier.

Chaînes brutes

ReSharper permet désormais de convertir les chaînes ordinaires et textuelles en chaînes brutes. De nombreuses fonctionnalités existantes pour les chaînes sont désormais également disponibles pour les chaînes brutes.

Suggestions de schémas de listes

Dans cette version, nous avons introduit des suggestions pour utiliser la nouvelle syntaxe de schéma de modèle de liste de C# 11 (au lieu des vérifications classiques de longueur de collection avec l'expression d'accès de l'indexeur qui en résulte) pour vérifier les éléments correspondants de la collection.

Membres virtuels statiques

Avec C# 11, vous pouvez utiliser les modificateurs abstract et virtual pour les membres static dans les interfaces et utiliser ces membres dans du code générique avec des paramètres de type spécifiés par cette interface. ReSharper a été mis à jour afin de gérer les membres polymorphiques de type static de la même façon que les membres polymorphiques ordinaires :

  • Marques d'héritage dans la gouttière.
  • Navigation vers l'implémentation/les membres parents.
  • Génération des implémentations manquantes.
  • Les suggestions de saisie semi-automatique du code après le mot-clé override incluent aussi les membres de l'interface, ce qui facilite l'implémentation des membres abstraits ou virtual static.

Opérateur de décalage à droite non signé (>>>)

Rider peut désormais reconnaître les modèles de code complexes que les développeurs C# doivent écrire afin d'effectuer un décalage à droite non signé pour des types de données avec signe, et suggère d'utiliser l'opérateur de décalage à droite non signé (>>>) en C# 11 à la place.

Correspondance des modèles dans les spans

Si vous analysez des Spans de caractères, vous utilisez probablement la méthode MemoryExtensions.SequenceEqual fréquemment. C# 11 introduit un raccourci pour ce type de vérification. Vous pouvez désormais simplement faire correspondre des Span de caractères avec des littéraux de chaînes avec les expressions is ou switch.

ReSharper suggère maintenant d'utiliser les expressions is ou switch plutôt que de nombreuses instructions if.

Champs ref et mot-clé scoped

Avec C#11, vous pouvez déclarer les champs ref dans les structures ref. ReSharper prend en charge cette nouvelle règle de syntaxe, fournit l'ensemble des erreurs et des avertissements de compilateur, affiche le mot-clé ref lors de la saisie semi-automatique du code et permet d'initialiser ces champs dans un constructeur.

ReSharper tient désormais compte du nouveau mot-clé « scoped » que vous pouvez utiliser sur les arguments by-ref ou ref struct et les variables locales. La prise en charge inclut l'analyse correcte de la nouvelle syntaxe, le mot-clé scoped dans la saisie semi-automatique du code et la préservation du mot-clé scoped lors de la génération de substitutions de méthodes. Elle permet également de vérifier la compatibilité des modificateurs scoped et inclut des correctifs rapides pour les paramètres scoped qui ne concordent pas lors des substitutions, des implémentations d'interface et des conversions de délégués.

C# 11 et .NET 7 ont également introduit des modifications des règles de sécurité ref du langage. Ces modifications déterminent les opérations qui sont disponibles pour les variables by-ref et ref struct, de façon à assurer la sécurité ref dans le code géré avec l'introduction de champs ref. ReSharper tient compte de ces modifications et vous aidera à trouver les parties de votre projet qui doivent être mises à jour et annotées avec le nouveau mot-clé scoped pour intégrer les modifications lors de la migration vers C# 11 ou .NET 7.

Injections de langage

La version 2022.3 apporte quelques modifications à la prise en charge des injections de langage :

Les injections de langage fonctionnent désormais dans les littéraux des chaînes de caractères brutes de C# 11.

ReSharper supports the [StringSyntax] attribute from .NET 7, along with its different syntaxes for language injection and code completion.

Mises à jour générales de C#

Icône de gouttière Global imports

Nous avons ajouté une nouvelle icône dans la gouttière pour prévenir les utilisateurs lors des importations d'espaces de nom implicites dans les fichiers C# et Razor.

En appuyant sur Alt+Entrée sur la ligne correspondante, vous pouvez voir la liste complète d'importations implicites et les informations sur le fichier source où sont situées les directives global using. Si vous sélectionnez un nom d'espace importé spécifique, ReSharper peut vous amener jusqu'à sa déclaration, y compris pour les balises <Using Include="Some.NameSpace" /> dans le fichier de projet .csproj.

ReSharper présente également les importations générales depuis _Imports.razor et permet de naviguer jusqu'aux définitions d'importation correspondantes.

Saisie semi-automatique pour la chaîne de format

L'ajout des types numériques Int128 et UInt128 dans .NET 7 nous a permis d'actualiser nos suggestions de spécificateur de format de saisie semi-automatique du code.

Nous avons également ajouté la prise en charge des types date/heure DateOnly et TimeOnly de .NET 6, ainsi que celle du type numérique à virgule flottante de demi-précision Half introduit dans .NET 5.

Transformation de schémas triviaux en expressions

Parfois, après la refactorisation, les expressions de correspondance de modèles peuvent se transformer en modèles récursifs simples. À ce stade, il n'est pas forcément nécessaire d'utiliser la syntaxe de schéma récursif, c'est pourquoi Rider fournit une action qui permet de réécrire les schémas sous forme d'expressions plus simples, tout en préservant la sémantique de correspondance des schémas d'origine.

Suggestions de saisie semi-automatique du code pour une expression void

Lorsque vous reprenez la saisie après un appel, il arrive que vous ne voyiez quasiment aucune suggestion pertinente. Cela peut se produire si l'appel n'a produit aucune valeur car une méthode renvoyant void a été appelée. Généralement, il faut plusieurs actions de l'IDE pour que cela se produise (revenir en arrière et accéder à la déclaration de méthode, ou survoler l'appel). Dans cette version, nous avons introduit l'élément de conseil void pour ces types d'appels de retour void afin de vous fournir un retour immédiat sur le type résultant de l'appel. L'acceptation de cet élément void ajoute un point-virgule après l'appel s'il n'y en a pas.

Mise en évidence du code

La mise en évidence du code et le soulignement ondulé ont été remaniés dans ReSharper 2022.3. En raison d'une différence de logique interne, ReSharper créait un conflit avec les analyseurs de style de code de Microsoft Roslyn, ce qui entraînait des chevauchements des zones sélectionnées, l'affichage de la même sélection à des endroits différents ou le doublement de lignes ondulées. Les différences de logique derrière la majorité de ces instances a maintenant été résolue, et pour les rares exceptions qui subsistent, les messages d'erreurs sont accompagnés de suggestions claires sur la façon de résoudre le problème.

Sécurité

Chaque fois que vous utilisez des packages NuGet open source dans vos solutions, il y a un risque d’exposer votre projet à des vulnérabilités de sécurité. Bien que NuGet fournisse des outils externes pour détecter ces menaces, il est infiniment plus pratique de disposer d'un outil de ce type directement dans votre IDE pour détecter toute vulnérabilité au moment de la conception. C'est pourquoi nous avons introduit la détection des dépendances vulnérables dans ReSharper. À partir de cette version, toutes les dépendances affectées seront mises en évidence dans les fichiers .csproj et .vbproj.

Prise en charge d'ARM64 Visual Studio 2022

ReSharper peut être intégré dans Microsoft Visual Studio sur les périphériques équipés de processeur ARM. Nous fournissons une prise en charge initiale de tous les workflows de développement basiques, à l'exception de la correction orthographique avec ReSpeller.

L'installateur a été mis à jour pour prendre en charge x64 et ARM64. La version adéquate sera installée automatiquement en fonction de l'architecture du processeur de votre machine.

Prise en charge de Windows ARM64

dotPeek, dotMemory, dotTrace et dotCover, ainsi que les outils de ligne de commande de ReSharper, prennent désormais en charge Windows ARM64.

Décompilateur

Le décompilateur embarqué de ReSharper 2022.3 prend en charge :

  • les membres static abstract et static virtual dans les interfaces
  • les attributs génériques
  • les opérateurs checked définis par l'utilisateur
  • l'opérateur de décalage à droite non signé.

IL Viewer

La fenêtre d'outil IL Viewer est désormais capable de décompiler le code en différents niveaux de constructions du langage C#. Deux niveaux de C# sont disponibles : le niveau supérieur, avec certaines constructions syntaxiques simplifiées à l’aide des dernières fonctionnalités du langage, et le niveau inférieur pour les cas où vous souhaitez connaître l’état brut de ces constructions syntaxiques.

Diagrammes des dépendances

ReSharper vous permet désormais d'enregistrer et d'importer des diagrammes de dépendances de types et de projets au format GraphML, et préserve la possibilité d'utiliser le diagramme comme une carte de code afin de pouvoir naviguer rapidement au sein des dépendances.

Dynamic Program Analysis

L'analyse de programme dynamique (DPA - Dynamic Program Analysis) fournit de nouvelles inspections qui permettent d'identifier différents problèmes en relation avec l'utilisation de bases de données :

  • Durée d'exécution des commandes trop longue
  • Nombre de connexions à la base de données trop élevé
  • Nombre de commandes de base de données exécutées simultanément trop élevé
  • Commandes renvoyant un trop grand nombre d'enregistrements

Les nouvelles inspections sont disponibles pour toutes les applications qui utilisent Entity Framework Core et un fournisseur de données .NET pour SQL Server.

Modules C++20

ReSharper C++ 2022.3 apporte une prise en charge expérimentale des modules de C++20. Nous avons mis à jour le moteur de langage et de nombreuses fonctionnalités de ReSharper C++ afin qu'ils puissent fonctionner avec le nouveau modèle de compilation, prenant en charge à la fois les modules nommés et les unités d'en-tête.

Nouveautés de ReSharper C++ 2022.3

Intégration de clang-format

ReSharper C++ 2022.3 propose une intégration fluide de clang-format. Vous pouvez maintenant alterner entre le moteur de formatage de ReSharper, le moteur intégré ou un binaire clang-format personnalisé pour formater vos fichiers. ReSharper C++ exécute clang-format dans un processus séparé, ce qui garantit une compatibilité totale avec l'outil de formatage standard, de meilleures performances et une plus large gamme d'options de formatage.

Télécharger

Essai gratuit sur 30 jours disponible