Prise en charge de C#
JetBrains continue à améliorer la prise en charge de C# 10, notamment pour les directives using globales. L'éditeur de logiciels pour développeurs a implémenté deux nouvelles refactorisations qui sont également disponibles en tant qu'actions contextuelles.
Extract Global Using peut vous aider à introduire le concept de directives using globales dans votre projet. Vous pouvez l'appeler sur une directive using standard et ReSharper vous proposera de l'extraire vers un fichier GlobalUsings.cs désigné (si ce fichier n'existe pas encore dans votre projet, il sera créé). Toute directive using ordinaire superflue sera ensuite supprimée des fichiers de votre projet.
Si vous décidez de refactoriser une directive using globale en directive using ordinaire, la refactorisation Inline Global Using peut là aussi vous aider. Si vous l'appelez sur une directive using globale, elle la supprime du fichier GlobalUsings.cs et ajoute l'instruction using correspondante aux fichiers de votre projet, là où elle est nécessaire.
La fonctionnalité using globale est prise en charge dans Find Usages et dans l'analyse de code pour les méthodes d'extension.
JetBrains a examiné les annonces concernant C# 11 et pris en charge les attributs génériques.
Types de référence nullables
- JetBrains a divisé en deux catégories les avertissements relatifs aux contrôles de null sur les expressions qui ne devraient jamais être nulles. Le premier avertissement concerne les expressions qui ne sont jamais null parce qu'une annotation NRT (nullable reference type) le dit. Le deuxième avertissement concerne les expressions pour lesquelles il y a une vérification de null au moment de l'exécution.
- On note l'ajout d'un nouveau paramètre pour passer en mode Runtime enforced not null warnings only afin de n'avertir qu'en cas de vérification null au moment de l'exécution. Il est accessible à partir du groupe d'éléments de configuration dans le menu Alt+Enter pour les avertissements annotation-based.
- Les annotations [MemberNotNull] et [MemberNotNullWhen] sont désormais prises en charge dans les projets qui n'utilisent pas de types de référence nullables.
Points de terminaison
La prise en charge des points de terminaison fonctionne désormais pour les API minimales d'ASP. NET Core 6 et le routage conventionnel. Elle inclut la navigation, l'analyse du code et la saisie semi-automatique.
Razor et Blazor
Voici quelques-unes des fonctionnalités et des corrections les plus notables concernant Razor et Blazor :
- Ajout de la prise en charge du nouvel attribut [EditorRequired] de .NET 6. L'inspection et le correctif rapide correspondants sont également disponibles si vous essayez d'utiliser un composant Blazor sans spécifier les paramètres requis.
- Implémentation de la prise en charge des fonctions locales C# dans la syntaxe Razor tant attendue.
- Amélioration du nettoyage du code dans les fichiers .razor avec des composants Blazor. Il ne supprime donc plus les déclarations @using.
- Corrections des actions contextuelles If To Switch et Invert If dans le code Razor avec des références aux composants Blazor.
- ReSharper utilise désormais le bon style de nommage pour les propriétés injectées par Blazor.
- L'action Comment with Line Comment commente maintenant uniquement la partie du code Razor souhaitée.
- JetBrains a ajouté la navigation via la hiérarchie de l'héritage au code Razor. Les marques des gouttières correspondantes sont maintenant indiquées pour les symboles de base et dérivés. Vous pouvez cliquer dessus pour accéder au code.
Nettoyage et mise en forme du code
JetBrains a réorganisé tous les éléments du menu Alt+Entrée liés à Code Cleanup et Formatting. Format selection, Cleanup selection et Apply syntax style ont été combinés en un seul élément Reformat and Cleanup afin de fournir un point d'entrée unique.
En plus de ces changements, les paramètres du style syntaxique sont maintenant disponibles dans les actions Configure code style et Autodetect code style settings. Le volet Preview code style affiche également les changements de style de la syntaxe.
Tests unitaires d'Unreal Engine
Le framework de test d'Unreal Engine est maintenant pris en charge. ReSharper C++ introduit la prise en charge des tests unitaires d'Unreal Engine et ajoute les indicateurs d'action correspondants près de chaque test dans l'éditeur pour exécuter ou déboguer le test ou l'ensemble de la suite du test. La fenêtre Unit Test Sessions permet de consulter les résultats des tests et d'exécuter à nouveau les tests qui ont échoué, tous les tests ou des tests spécifiques.
Renforcement de la prise en charge de C++
ReSharper C++ gère mieux les appels implicites de constructeurs, ce qui vous permet de trouver des utilisations et d'accéder au constructeur appelé dans davantage de cas, notamment :
- fonctions de création de pointeur intelligentes standard (make_unique/make_shared) et spécifiques à Unreal (MakeShared/MakeUnique).
- méthodes de conteneur de type emplace.
- static_cast et expressions de conversion de type C.
- ReSharper C++ 2022.1 affiche également un avertissement de surcharge si une fonction de type emplace est appelée avec des arguments incorrects.
Générateurs de code source
Après avoir analysé les performances de la prise en charge des générateurs de code source, JetBrains a décidé d'espacer les requêtes lors de l'extraction des documents générés par la source sur le compilateur. Cela évite que les générateurs de code source s'exécutent avant le compilateur et réduit la charge de travail du processeur. Le gain de performances réellement obtenu peut varier, notamment si d'autres fonctionnalités déclenchent également les générateurs, tels que la saisie semi-automatique de ligne de Visual Studio.
Performances
JetBrains a corrigé plusieurs problèmes affectant les performances et pris des mesures pour traiter les autres. Cela inclut le traitement des instantanés de performances de nos clients, les sessions de profilage interne et la collecte de données pour mettre en place ultérieurement des contrôles permettant d'être alerté automatiquement en cas de dégradation des performances.
L'éditeurs de logiciels pour développeurs travaille également sur le mode « hors processus » qui devrait permettre d'obtenir des gains de performance.
Outils de ligne de commande de ReSharper
Les outils InspectCode peuvent générer des fichiers de sortie compatibles avec le format SARIF (Static Analysis Results Interchange Format). Les outils de ligne de commande prennent désormais en charge Alpine Linux.
Décompilateur
- Le décompilateur intégré affiche désormais les commentaires de documentation XML pour les assemblies de plateforme, ce qui inclut les assemblies dont le nom diffère des noms des fichiers de documentation XML, par exemple, System.Private.CoreLib. Le chemin de la documentation XML s'affiche à présent dans l'en-tête du fichier décompilé.
- JetBrains a désactivé le reciblage de la navigation dans la vue Metadata.
- On note l'ajout de présentations de blob décodées/brutes dans les propriétés des nœuds de blob.
- Assembly Explorer prend maintenant en charge les types transférés (les attributs [TypeForwardedTo]). L'action Locate in Metadata fonctionne également pour les types transférés, les références d'assemblies et de modules, et les ressources.
- JetBrains a aussi amélioré la navigation PDB pour les types sans points de séquence, tels que les interfaces et les énumérations.
Autres améliorations
Prise en charge améliorée des événements SQL Server
dotTrace prend désormais en charge les événements SQL Server depuis le fournisseur Microsoft.Data.SqlClient sous Windows (.NET Core, .NET 5+), ainsi que sous macOS et Linux (.NET Core 3.0+, .NET 5+).
Attachement aux applications par glisser-déplacer
Il est désormais possible d'attacher le profileur à une application en cours d'exécution en faisant simplement glisser l'icône spéciale sur la fenêtre d'application.
Exclusion de code de l'analyse de couverture en utilisant les commentaires
Il est désormais possible d'utiliser les commentaires pour exclure certaines lignes ou certains blocs de code de l'analyse de la couverture.
Autres mises à jour
- JetBrains a apporté des améliorations à la refactorisation Move type to file, ce qui inclut également une action contextuelle et un correctif rapide. Désormais, les directives de préprocesseur sont déplacées en même temps que le type.
- On note la résolution du problème de « changement massif du système de fichiers ». Il s'agissait en fait d'un dépassement de la mémoire tampon d'événement. Cela forçait ReSharper à réviser l'ensemble des fichiers de la solution sans véritable raison, ce qui entraînait une forte sollicitation du processeur et, dans certains cas, un blocage de l'interface utilisateur.
- JetBrains a corrigé les problèmes qui affectaient la fonctionnalité de ReSharper dans les fichiers .sqlproj des versions localisées de Visual Studios.
- On note aussi l'ajout de la vue d'arborescence Metadata dans ReSharper (uniquement pour Visual Studio 2022). Elle vous permet de parcourir tous les éléments des métadonnées d'assemblies et inclut les recherches et la navigation jusqu'aux sources, et bien plus encore.
- JetBrains a encore résolu plusieurs problèmes de longue date qui conduisaient ReSharper à colorer le code en rouge lors du passage d'une branche Git à une autre. L'éditeur de logiciels a identifié plusieurs scénarios à l'origine de ce problème et a pris les mesures nécessaires.
Nouveautés et téléchargement de ReSharper 2022.1