IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

ReSharper 2022.3 est disponible :
Aperçu des nouveautés et améliorations de l'extension Visual Studio pour les développeurs .NET

Le , par Michael Guilloux

12PARTAGES

5  0 
ReSharper 2022.3 inaugure une prise en charge de base pour les dernières fonctionnalités de C# 11, notamment les littéraux UTF-8, les types locaux de fichiers, les membres virtuels statiques et la correspondance de schémas sur des plages. Pour cette version, JetBrains a repensé la mise en évidence du code, introduit la détection des dépendances vulnérables pour les packages NuGet et autorisé l'importation et l'exportation de diagrammes de dépendances de types et de projets au format GraphML. Cette version est également dotée d'une prise en charge anticipée de Microsoft Visual Studio sur ARM64. Dans la suite, nous entrons dans les détails des nouveautés et améliorations de ReSharper par domaine.

C# 11

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

Littéraux UTF-8

L'éditeur de logiciels pour développeurs a 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 un tableau d'octets comportant 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, le 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. Cela signifie également que de nombreuses fonctionnalités existantes pour les chaînes sont désormais disponibles pour les chaînes brutes.

Suggestions de schémas de listes

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


Membres virtuels statiques

Dès 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 limité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 :

  • marqueurs d'héritage dans la gouttière ;
  • navigation vers l'implémentation/les super-membres ;
  • 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é (>>>

ReSharper sait à présent reconnaître les modèles de code fastidieux que les développeurs C# doivent écrire pour effectuer un décalage à droite sans signe sur des types de données avec signe, et suggère d'utiliser à la place l'opérateur de décalage à droite sans signe (>>>) dans C# 11.

Reconnaissance des schémas dans plusieurs étendues

Si vous analysez des étendues Span de caractères, vous utilisez sans doute la méthode MemoryExtensions.SequenceEqual intensivement. C# 11 introduit un raccourci pour ce type de vérification. Vous pouvez désormais comparer des schémas d'étendues Span de caractères à des littéraux de chaîne avec les expressions is ou switch.


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

Champs ref et mot-clé scoped

À partir de C#11, vous pouvez déclarer les champs ref dans les structs 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 vérifie également 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.

Dans la mesure où il est de plus en plus difficile pour le compilateur de démontrer la sécurité ref en raison des nouvelles possibilités du langage, de nombreuses erreurs de sécurité ref ont été rétrogradées en avertissements avec la dernière version de C# dans des contextes non sécurisés (unsafe). Les dernières versions de ReSharper tiennent également compte de ces modifications.

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 prend en charge l'attribut [StringSyntax] de .NET 7, ainsi que ses différentes syntaxes pour l'injection de langage et la saisie semi-automatique du code.

Mises à jour générales de C#

Icône de gouttière Global imports

JetBrains a 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 observer la liste complète d'importations implicites et d'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 a permis à JetBrains d'actualiser ses suggestions de spécificateur de format de saisie semi-automatique du code.

L'éditeur de logiciels pour développeurs a également ajouté la prise en charge des types de date/heure DateOnly et TimeOnly depuis .NET 6, ainsi que le type numérique à virgule flottante avec une précision moyenne Half, introduit dans .NET 5.

Transformation de schémas triviaux en expressions

Après une refactorisation, vos expressions de reconnaissance de schémas peuvent se transformer en schémas récursifs triviaux. À ce stade, il peut être contre-productif d'utiliser la syntaxe de schéma récursif. Par conséquent, ReSharper offre une action permettant de réécrire les schémas sous forme d'expressions plus simples, tout en préservant la sémantique d'origine de reconnaissance des schémas.


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

Lors de la saisie après un appel, il arrive parfois que quasiment aucune suggestion utile ne s'affiche. Cela peut se produire si l'appel ne produit aucune valeur lors de l'appel de la méthode renvoyant void. Généralement, il faut plusieurs actions de l'EDI pour y parvenir (revenir en arrière et accéder à la déclaration de méthode, ou survoler l'appel). Dans cette version, JetBrains a introduit l'élément de conseil void pour ce type d'appel renvoyant void afin de vous informer immédiatement 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 entre la majorité de ces instances a maintenant été résolue, et pour les rares exceptions, les erreurs sont accompagnées de suggestions claires permettant de résoudre le conflit.

Sécurité

Lorsque vous utilisez des packages NuGet open source dans vos solutions, vous risquez d'exposer votre projet à des failles 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 EDI pour détecter toute vulnérabilité au moment de la conception. C'est pourquoi JetBrains introduit la détection des dépendances vulnérables dans ReSharper. À partir de cette version, toutes les dépendances concernées seront mises en évidence dans les fichiers .csproj et .vbproj.

Prise en charge de Visual Studio 2022 avec un processeur ARM64

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

L'installateur a été mis à jour pour prendre en charge aussi bien la version x64, qu'ARM64. La version correcte sera automatiquement installée 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 éléments suivants :

  • 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 sans signe.


IL Viewer

La fenêtre d'outil IL Viewer est désormais capable de décompiler le code en différents niveaux de constructs du langage C#. Deux niveaux de C# sont disponibles : le niveau supérieur, avec certaines constructs syntaxiques simplifiées à l'aide des dernières fonctionnalités du langage, et le niveau inférieur, pour les cas où vous souhaitez découvrir l'état brut de ces constructs 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 du code afin de naviguer rapidement au sein des dépendances.


Dynamic Program Analysis

L'analyse de programme dynamique (DPA - Dynamic Program Analysis) comporte de nouvelles inspections qui permettent d'identifier différents problèmes en relation avec l'utilisation de la base de données, plus précisément :

  • l'exécution des commandes prend beaucoup de temps ;
  • nombre trop élevé de connexions à la base de données ;
  • nombre trop élevé de commandes de base de données exécutées simultanément ;
  • commandes renvoyant un nombre trop élevé 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 se dote d'une prise en charge expérimentale des modules C++20. JetBrains a mis à jour le moteur de langage et de nombreuses fonctionnalités de ReSharper C++ afin de les adapter au nouveau modèle de compilation, compatible avec les modules nommés et les unités d'en-tête.


Intégration de clang-format

ReSharper C++ 2022.3 propose une intégration fluide de clang-format. Vous pouvez maintenant basculer entre le moteur de mise en forme propre à ReSharper et le moteur intégré ou un binaire clang-format personnalisé pour mettre en forme vos fichiers. ReSharper C++ exécute clang-format dans un processus distinct, ce qui garantit une compatibilité totale avec l'outil de mise en forme standard de l'industrie, ainsi que de meilleures performances et un plus large éventail d'options de mise en forme.


Nouveautés et téléchargement de ReSharper 2022.3

Une erreur dans cette actualité ? Signalez-nous-la !