Analyse du code

ReSharper fournit des analyses continues de la qualité du code pour C#, VB.NET, XAML, XML, ASP.NET, ASP.NET MVC, ASP.NET Core, HTML, ResX et Protobuf. Les erreurs et problèmes sont instantanément détectés, avant même la compilation.

Inspections de code de ReSharper sur la Marker Bar dans Visual Studio

Analyse continue de la qualité du code

ReSharper applique plus de 2200 inspections à votre code pendant la conception pour vous permettre de voir instantanément si le fichier sur lequel vous travaillez, ou même toute votre solution, contient des erreurs ou problèmes.

ReSharper met en valeur les erreurs et problèmes directement dans l'éditeur Visual Studio et les visualise en plus grâce à la Marker Bar à droite.

Le Status Indicator en haut de la Marker Bar change de couleur et d'icône si le fichier contient des erreurs ou des problèmes. Un clic droit sur l'icône vous permet de rapidement basculer entre l'analyse de code ReSharper, la mise en valeur des identificateurs et l'analyse de code Visual Studio, ainsi que de naviguer entre les problèmes dont la sévérité est la plus élevée.

Analyse de code dans ReSharper

Erreurs

ReSharper détecte et met en valeur instantanément les erreurs pendant que vous codez, directement dans l'éditeur.

Les erreurs sont marquées soient via une police rouge, soit via un soulignage ondulé. Si vous passez le curseur de la souris sur une erreur, sa description est affichée dans une infobulle.

ReSharper est en mesure de détecter les erreurs non seulement dans du simple code C# ou VB.NET, mais également dans des fichiers code-behind ASP.NET, des références de fichiers de balisage et des appels ASP.NET MVC.

Pour XAML, ReSharper vérifie la syntaxe XML et valide de manière experte la sémantique XAML, dont les références entre les entités XAML.

Dans les scripts de build (NAnt et MSBuild), ReSharper analyse et met en valeur les propriétés, cibles, tâches et attributs inconnus.

Les inspections de code sont également disponibles pour HTML et XML.

Avertissements

En plus des erreurs et des avertissements du compilateur, ReSharper affiche ses propres avertissements qui n'empêchent pas votre code d'être compilé, mais peuvent quand même représenter un sévère manque d'efficacité au niveau du code. Par exemple, ReSharper vous signale les casts redondants, les chaînes au format incorrect, les variables locales déclarées, mais jamais utilisées, etc. Les constructions avec des avertissements sont mises en valeur via un texte grisé ou un soulignage ondulé bleu.

Suggestions

Une analyse plus profonde de code est disponible avec les suggestions de code. Les suggestions apportent une meilleure compréhension de la structure du code, ce qui attire votre attention sur des éléments qui ne sont pas nécessairement bons ou mauvais, juste utiles à connaître. Les suggestions sont mises en valeur par un soulignage ondulé vert.

Par exemple, il peut être intéressant de savoir qu'un certain paramètre peut être déclaré avec un type de base, ce qui signifie que votre méthode n'utilise que les membres du type de base du paramètre. ReSharper peut également suggérer la création d'une propriété automatique à partir d'une propriété dotée d'un champ de stockage, la conversion d'une invocation de méthode statique en appel de méthode d'extension, ou l'utilisation du mot-clé 'var' dès que possible.

Conseils

La dernière sévérité de mise en valeur de code, et la moins intrusive, est le conseil. Contrairement aux erreurs, avertissements et suggestions, les conseils ne sont pas pris en considération quand vous naviguez vers la mise en valeur précédente ou suivante, ne sont pas affichés dans la Marker Bar et donc n'influencent pas la couleur de l'indicateur de statut.

Un conseil attire simplement votre attention sur un détail de code en particulier et recommande une amélioration. Les éléments de code associés à des conseils sont mis en valeur via un soulignage pointillé vert.

Correctifs rapides pour problèmes de code dans ReSharper

Correctifs rapides pour problèmes de code

ReSharper compte plus de 1200 correctifs rapides qui vous aident à réparer instantanément la plupart des problèmes de code détectés dans tous les langages pris en charge. Appliquer un correctif rapide est aussi simple que d'appuyer sur Alt+Entrée sur un problème de code mis en valeur et de choisir la bonne manière de corriger ou d'améliorer le code sous optimisé.

Alt text

Inspections à l'échelle de la solution

Les avertissements et suggestions à l'échelle de la solution vous aident à détecter à la volée les membres non privés inutilisés. Ces inspections fonctionnent uniquement quand vous laissez ReSharper analyser l'intégralité de votre solution. Cherchez les incidents surlignés dans votre code et sur la barre Marker. Vous pouvez découvrir en particulier :

  • Les déclarations non privées inutilisées.
  • Les valeurs de renvoi inutilisées de méthodes non privées.
  • Les champs non privés non accédés.
  • Les paramètres inutilisés de membres non privés.
  • Les événements abstraits ou virtuels qui ne sont jamais invoqués.
  • Les champs sans affectation.
  • Les membres et types qui peuvent être rendus internes au lieu de publics.

De plus, les annotations de code permettent de marquer certains types et membres non privés s'ils sont laissés inutilisés intentionnellement, afin d'empêcher ReSharper de s'y arrêter.

Désactivation et configuration d'éléments d'inspection de code

À tout moment vous pouvez changer la sévérité de différents éléments d'analyse. Par exemple, vous pouvez demander à ReSharper d'afficher une certaine inspection/notification sous la forme d'erreur, d'avertissement, de suggestion de code ou de conseil, en fonction de votre propre style de code ou d'exigences professionnelles.
Mieux encore : il peut arriver que vous sachiez qu'un bout de code en particulier convient parfaitement et qu'il est inutile de le signaler. Vous pouvez donc désactiver un avertissement spécifique.

Pour désactiver ou configurer des éléments d'inspection de code, utilisez la page Code Inspection | Inspection Severity des options de ReSharper. Vous pouvez également configurer un avertissement, une suggestion ou un conseil en particulier grâce au menu Options for inspection de la liste des actions, que vous pouvez invoquer en appuyant sur Alt+Entrée.

Chaque erreur, avertissement ou suggestion est représenté par une rayure individuelle spécifique sur la Marker Bar. Cliquer sur la rayure vous envoie directement à la ligne de code à l'origine de l'erreur, de l'avertissement ou de la suggestion.

Vous pouvez naviguer entre les erreurs, avertissements et suggestions en appuyant sur Alt+Pg.Suiv (suivante) et Alt+Pg.Préc (précédente). Vous pouvez aussi parcourir uniquement les erreurs (et sauter les avertissements et suggestions) en appuyant sur Maj+Alt+Pg.Suiv (erreur suivante) et Maj+Alt+Pg.Préc (erreur précédente). Une message décrivant l'erreur, avertissement ou suggestion actuel est affiché dans la barre d'état.

Il existe un autre moyen de parcourir les problèmes de code : vous pouvez trouver tous les problèmes de code dans une certaine portée et les explorer dans une fenêtre d'outil dédiée.

Mettre en valeur du code correspondant à un schéma de recherche et le remplacer grâce à un schéma de remplacement

Vos inspections de code personnalisées

ReSharper inclut la fonctionnalité Structural Search and Replace pour trouver du code correspondant à un certain schéma et éventuellement le remplacer par du code correspondant à un autre schéma. Encore mieux : ReSharper peut surveiller continuellement les schémas de recherche de votre solution, mettre en valeur le code qui leur correspond et fournir des correctifs rapides pour remplacer le code en fonction de vos schémas de remplacement.

Cela signifie principalement que vous pouvez développer le jeu d'inspections de code de ReSharper en y ajoutant vos propres inspections personnalisées. Par exemple, si vous migrez vers une version plus récente d'un framework, vous pouvez créer des schémas de recherche pour trouver les utilisations de ses anciennes API et des schémas de remplacement pour introduire une API à jour.

Détection des erreurs dans l'intégralité de la solution

Surveillance des erreurs avec analyses sur toute la solution

Non seulement ReSharper est en mesure d'analyser les fichiers ouverts pendant la conception, mais il peut étendre ses capacités d'analyse pour couvrir toute la solution.

Imaginons que vous changiez la visibilité d'un membre de public à interne, en partant du principe qu'il n'était utilisé que dans l'assembly en cours. À ce niveau, ReSharper ne trouve aucune erreur dans le fichier en cours. Puis vous activez la fonctionnalité Solution-Wide Analysis et ReSharper découvre que quelque chose ne tourne pas rond. Vous passez à l'erreur suivante dans la solution et découvrez que quelqu'un à utilisé ce membre depuis l'extérieur du projet actuel.

Vous n'avez alors qu'à activer explicitement Solution-Wide Analysis, puis, une fois le code de votre solution analysé, à afficher la liste des erreurs dans une fenêtre dédiée.

Même sans ouvrir cette fenêtre, vous pouvez facilement naviguer entre les erreurs de votre solution grâce à Go to Next Error/Warning in Solution (Maj+Alt+Pg.Suiv) et Go to Previous Error/Warning in Solution (Maj+Alt+F12).

Avertissements des analyses sur toute la solution

Surveillance des avertissements d'analyses sur toute la solution

Dès que la dernière erreur d'une solution est corrigée, l'indicateur rouge de la barre d'état passe vert. Cependant, une analyse exhaustive de la solution peut vous aider à améliorer encore plus la qualité de son code : cliquez sur Include Warnings dans la vue des erreurs et ReSharper commencera à surveiller les avertissements (tant les avertissements du compilateur que ceux détectés par les inspections de ReSharper avec le niveau de sécurité Warning) dans toute la solution.

Si des erreurs apparaissent à nouveau dans la solution, les avertissements seront automatiquement masqués pour vous permettre de vous concentrer sur les erreurs. Les avertissements seront de nouveau affichés une fois toutes les erreurs corrigées.

Suivi des appels

Avant, tenter de suivre les séquences d'appel d'un code pouvait entraîner l'ouverture de nombreuses fenêtres Find Results et une perte de contenu. Pour régler ce problème, ReSharper peut visualiser la séquence d'appel en entier dans une seule fenêtre d'outil. Cela s'appelle Call Tracking, et vous permet de voir et de naviguer entre les chaînes d'appel de votre code.

Grâce à la prise en charge des événements, interfaces et fermetures, le suivi des appels de ReSharper constitue une réelle amélioration par rapport à la hiérarchie des appels de Visual Studio.

Pour visualiser une séquence d'appel, choisissez ReSharper | Inspect | Outgoing Calls ou ReSharper | Inspect | Incoming Calls, ou bien utilisez le raccourci Inspect This.

Trouver des problèmes de code

ReSharper vous permet de trouver tous les problèmes de qualité du code, les redondances, les opportunités d'utilisation de langage et les suggestions d'amélioration du code depuis une même fenêtre d'outil appelée Inspection Results.

Pour trouver les problème de code dans une certaine portée, choisissez ReSharper | Inspect | Code Issues in Solution ou ReSharper | Inspect | Code Issues in Current Project. Vous pouvez aussi sélectionner un nœud dans le Solution Explorer, en faisant un clic droit dessus et en choisissant Find Code Issues.

La fenêtre Inspection Results vous permet de filtrer les problèmes détectés, de regrouper les résultats par type de problème, sévérité, catégorie et autre propriété, et d'exporter les résultats dans un fichier.

Suivi des valeurs

Le suivi des valeurs vous apporte des informations importantes sur les flux de données de votre programme. Depuis n'importe quel endroit de votre code source, vous pouvez pointer vers une variable, un paramètre, un champ ou une propriété et demander à ReSharper de l'inspecter. Vous pouvez alors voir comment sa valeur évoluent dans votre programme, de ses sources aux consommateurs.

Le suivi des valeurs vous aide à déterminer comment une certaine valeur incorrect a pu passer par un point particulier de votre programme et où elle passera ensuite. Cela vous aide à découvrir les NullReferenceExceptions possibles, les comportements inappropriés et les raisons pour lesquelles vous recevez des valeurs incorrectes.

Pour visualiser le flux de donnée auquel participe une valeur en particulier, choisissez ReSharper | Inspect | Value Origin ou ReSharper | Inspect | Value Destination, ou bien utilisez le raccourci Inspect This.

Annotations de code

Il peut arriver que même un moteur d'analyse de code aussi puissant que ReSharper ne dispose pas des connaissances nécessaires à la détection de certains problèmes. Par exemple, si une méthode est conçue pour ne jamais renvoyer null et que ses clients sont développés en fonction, aucune analyse de code ne trouvera de problème si quelqu'un change la méthode pour qu'elle renvoie null.

Dans ce cas précis et dans d'autres, le framework JetBrains.Annotations aide à identifier des problèmes qui n'auraient pu être autrement débusqués. Les attributs déclarés dans ce framework peuvent pousser ReSharper à analyser le code comme vous voulez qu'il le fasse.

Pour utiliser les attributs d'annotation de code de ReSharper dans votre code source, installez le pack NuGet correspondant. Vous pouvez le faire en ajoutant simplement la directive using JetBrains.Annotations; et ReSharper vous aidera automatiquement à récupérer le package.

Inspect This

Inspect ThisCtrl+Maj+Alt+A — est un raccourci unique pour plusieurs fonctionnalités de ReSharper combinant analyse de code et navigation, dont le suivi des appels, le suivi des valeurs, la hiérarchie des types et le diagramme des dépendances des types.

Remarque sur les raccourcis

Tous les raccourcis clavier indiqués sur cette page sont disponibles dans la configuration clavier "Visual Studio" par défaut de ReSharper . Pour en savoir plus sur les deux configurations clavier de ReSharper, consultez la Documentation ReSharper.