Codeanalyse

ReSharper analysiert kontinuierlich die Codequalität in C#, VB.NET, XAML, XML, ASP.NET, ASP.NET MVC, ASP.NET Core, HTML, ResX und Protobuf. Fehler und Probleme werden sofort erkannt, sogar noch vor dem Kompilieren.

Codeinspektionen von ReSharper in der Markierungsleiste in Visual Studio

Kontinuierliche Analyse der Codequalität

ReSharper wendet während der Entwicklung über 2200 Codeinspektionen auf Ihren Code an, so dass Sie sofort sehen können, ob Ihre aktuelle Datei oder sogar Ihre ganze Lösung Fehler oder Probleme enthält.

ReSharper hebt erkannte Fehler und Probleme direkt im Editor von Visual Studio hervor und stellt sie außerdem in der Markierungsleiste am rechten Rand dar.

Die Statusanzeige oberhalb der Markierungsleiste ändert ihre Farbe und ihr Symbol, wenn die Datei Fehler oder Probleme enthält. Mit einem Rechtsklick auf das Symbol können Sie schnell zwischen der ReSharper-Codeanalyse, der Hervorhebung von Bezeichnern und der Codeanalyse von Visual Studio umschalten sowie zwischen Problemen der höchsten Schweregradsstufe navigieren.

Codeanalyse in ReSharper

Fehler

ReSharper erkennt Fehler bereits beim Schreiben des Codes und hebt sie im Editor hervor.

Fehler werden entweder durch rote Schrift oder durch gewellte Unterstreichung hervorgehoben. Wenn Sie den Mauszeiger über einen Fehler bewegen, wird dessen Beschreibung in einer QuickInfo angezeigt.

ReSharper erkennt Fehler nicht nur in einfachem C#- oder VB.NET-Code, sondern auch in ASP.NET-Code-Behind-Dateien, Referenzen in Markup-Dateien und ASP.NET-MVC-Aufrufen.

Bei XAML überprüft ReSharper die XML-Syntax und validiert gründlich die XAML-Semantik, einschließlich der Referenzen zwischen XAML-Entitäten.

Bei Buildskripten (NAnt und MSBuild) analysiert und hebt ReSharper unbekannte Eigenschaften, Ziele, Aufgaben und Attribute hervor.

Codeinspektionen in HTML und XML stehen ebenfalls zur Verfügung.

Warnungen

Zusätzlich zu Compilerfehlern und -warnungen zeigt ReSharper seine eigenen Warnungen an, die Ihren Code zwar nicht vom Kompilieren abhalten, aber trotzdem schwere Unzulänglichkeiten darstellen können. Zum Beispiel benachrichtigt ReSharper Sie bei redundanten Casts, ungültigen Formatstrings, deklarierten, aber nie verwendeten lokalen Variablen usw. Konstrukte, die zugehörige Warnungen haben, werden entweder mit ausgegrautem Text oder einem blauen gewellten Unterstrich hervorgehoben.

Vorschläge

Für eine tiefere Ebene der Codeanalyse stehen Codevorschläge zur Verfügung. Vorschläge bieten Einsichten in die Codestruktur und lenken Ihre Aufmerksamkeit auf Dinge, die nicht notwendigerweise schlecht oder falsch sind, die aber nützlich zu wissen sind. Vorschläge werden durch grüne gewellte Unterstriche hervorgehoben.

Beispielsweise könnte es Sie interessieren, dass ein bestimmter Parameter mit einem Basistyp deklariert werden kann – dies bedeutet, dass Ihre Methode nur Member des Basistyps des Parameters verwendet. ReSharper kann außerdem vorschlagen, eine Eigenschaft mit zugrundeliegendem Feld in eine Auto-Eigenschaft umzuwandeln, einen statischen Methodenaufruf in einen Erweiterungsmethodenaufruf zu konvertieren oder nach Möglichkeit das „var“-Schlüsselwort zu verwenden.

Hinweise

Der letzte und am wenigsten aufdringliche Schweregrad der Codehervorhebung sind Hinweise (Hints). Im Gegensatz zu Fehlern, Warnungen und Vorschlägen werden Hinweise nicht berücksichtigt, wenn Sie zur nächsten oder vorherigen Hervorhebung navigieren. Sie werden nicht in der Markierungsleiste angezeigt und beeinflussen deshalb nicht die Farbe der Statusanzeige.

Ein Hinweis lenkt Ihre Aufmerksamkeit einfach nur ein spezielles Codedetail und empfiehlt eine Möglichkeit der Verbesserung. Codeelemente, zu denen Hinweise vorhanden sind, werden mit einem gestrichelten grünen Unterstrich hervorgehoben.

Quick-Fixes für Codeprobleme in ReSharper

Quick-Fixes für Codeprobleme

ReSharper wird mit mehr als 1200 Quick-Fixes ausgeliefert, die Ihnen bei der sofortigen Behebung der meisten erkannten Codeprobleme in allen unterstützten Sprachen helfen. Das Anwenden eines Quick-Fixes ist sehr leicht: Sie drücken Alt+Enter bei einem hervorgehobenen Codeproblem und wählen die geeignete Methode zum Lösen des Problems oder zur Verbesserung des suboptimalen Codes aus.

Alternativer Text

Lösungsweite Inspektionen

Lösungsweite Warnungen und Vorschläge helfen ihnen, unbenutzte, nicht private Elemente in Echtzeit zu erkennen. Diese Inspektionen funktionieren nur, wenn Sie ReSharper Ihre gesamte Lösung analysieren lassen. Probleme werden in der Markierungsleiste angezeigt und in Ihrem Code hervorgehoben. Sie können insbesondere Folgendes entdecken:

  • Unbenutzte, nicht private Deklarationen.
  • Unbenutzte Rückgabewerte nicht privater Methoden.
  • Nicht private Felder, auf die nicht zugegriffen wird.
  • Unbenutzte Parameter in nicht privaten Elementen.
  • Abstrakte oder virtuelle Ereignisse, die nie aufgerufen werden.
  • Nicht zugewiesene Felder.
  • Member und Typen, die auf intern anstatt auf öffentlich gestellt werden können.

Außerdem sind Code-Annotations verfügbar, die Sie verwenden können, um nicht private Typen und Member, die absichtlich unbenutzt sind, zu markieren, damit ReSharper sie ignoriert.

Codeinspektionselemente deaktivieren und konfigurieren

Sie können jederzeit den Schweregrad verschiedener Analyseelemente ändern – zum Beispiel können Sie ReSharper eine besondere Inspektion/Benachrichtigung als Fehler, Warnung, Codevorschlag oder Hinweis anzeigen lassen, abhängig von Ihrem individuellen Programmierstil oder den Unternehmensanforderungen.
Außerdem wissen Sie es manchmal besser, dass ein bestimmter Codeteil in Ordnung ist und keine Warnungen erforderlich sind, so dass Sie einfach eine bestimmte Warnung deaktivieren können.

Um Codeinspektionselemente zu deaktivieren oder zu konfigurieren, verwenden Sie die Seite Code Inspection | Inspection Severity in den ReSharper-Optionen. Sie können außerdem eine bestimmte Warnung, Vorschlag oder Hinweis konfigurieren, indem Sie das Menü Options for inspection in der Aktionsliste verwenden, die Sie mit Alt+Enter aufrufen können.

Jeder Fehler, Warnung oder Vorschlag wird durch einen einzelnen Streifen auf der Markierungsleiste dargestellt. Wenn Sie auf den Streifen klicken, navigieren Sie direkt zu der entsprechenden Codezeile.

Sie können zwischen Fehlern, Warnungen und Vorschlägen navigieren, indem Sie Alt+BildAb (vorwärts) oder Alt+BildAuf (rückwärts) drücken. Um nur zwischen Fehlern zu navigieren (und sämtliche Warnungen und Vorschläge zu überspringen), drücken Sie Umschalt+Alt+BildAb (zum nächsten Fehler) oder Umschalt+Alt+BildAuf (zum vorherigen Fehler). In der Statusleiste wird eine Meldung angezeigt, die den aktuellen Fehler, Warnung oder Vorschlag beschreibt.

Es gibt außerdem eine alternative Möglichkeit, zwischen Codeproblemen zu navigieren: Sie können in einem bestimmten Geltungsbereich alle Codeprobleme finden und in einem separaten Toolfenster anzeigen.

Code hervorheben, der einem Suchmuster entspricht, und diesen mit einem Ersatzmuster ersetzen

Ihre benutzerdefinierten Codeinspektionen

ReSharper bietet Strukturelles Suchen und Ersetzen an, um Code zu finden, der einem bestimmten Muster entspricht, und diesen optional durch Code zu ersetzen, der mit einem anderen Muster übereinstimmt. Noch besser ist, dass ReSharper Ihre Lösung kontinuierlich auf das Auftreten Ihrer Suchmuster überwachen kann. Code, der dem Suchmuster entspricht, wird hervorgehoben, und mit einem Quick-Fix können Sie den Code gemäß Ihrem Ersetzungsmuster ersetzen lassen.

Das bedeutet im Wesentlichen, dass Sie die Codeinspektionen von ReSharper um Ihre eigenen Inspektionen erweitern können. Wenn Sie zum Beispiel zu einer neueren Version eines Frameworks migrieren, können Sie Suchmuster erstellen, um Verwendungen der älteren API zu finden und durch Ersetzungsmuster auf die aktualisierte API umzustellen.

Fehler in der gesamten Lösung erkennen

Fehler durch lösungsweite Analysen erkennen

ReSharper ist nicht nur in der Lage, offene Dateien während der Entwurfszeit zu analysieren, sondern es kann seine Analysefähigkeiten auf Ihre gesamte Lösung erweitern.

Nehmen wir an, dass Sie die Sichtbarkeit eines Elements unter der Annahme von öffentlich auf intern geändert haben, dass es nur innerhalb der aktuellen Assembly verwendet wird. Zu diesem Zeitpunkt findet ReSharper keinen Fehler in der aktuellen Datei. Dann wechseln Sie zur lösungsweiten Analyse und ReSharper meldet ein Problem. Sie springen zum nächsten Fehler in der Lösung und finden heraus, dass jemand dieses Element außerhalb des aktuellen Projekts verwendet hat.

Sie müssen nichts weiter tun als explizit zur lösungsweiten Analyse zu wechseln und sich dann, nachdem der Code Ihrer Lösung analysiert wurde, die Fehlerliste in einem separaten Fenster anzusehen.

Auch ohne das Fenster zu öffnen können Sie mühelos zu den Fehlern in Ihrer Lösung navigieren, und zwar mit den Befehlen Go to Next Error/Warning in Solution (Umschalt+Alt+BildAb) und Go to Previous Error/Warning in Solution (Umschalt+Alt+F12).

Warnungen in lösungsweiten Analysen

Warnungen mit lösungsweiten Analysen überprüfen

Sobald der letzte Fehler in der Lösung behoben wurde, wechselt der Statusanzeiger von Rot nach Grün. Eine lösungsweite Analyse kann jedoch helfen, die Codequalität in Ihrer Lösung noch weiter zu verbessern – klicken Sie in der Fehleransicht auf Include Warnings , und ReSharper wird Warnungen (sowohl Compiler-Warnungen als auch jene, die von den ReSharper-Inspektionen mit dem Schweregrad Warnung erkannt wurden) in der gesamten Lösung überwachen.

Treten wieder Fehler in Ihrer Lösung auf, werden Warnungen automatisch ausgeblendet, damit Sie sich auf das Beheben der Fehler konzentrieren können. Warnungen werden wieder angezeigt, wenn alle Fehler behoben wurden.

Aufruferfassung

In der Vergangenheit konnte das Nachverfolgen von Aufrufsequenzen im Code zu zahlreichen Find Results-Fenstern und verloren gegangenem Kontext führen. Um dieses Problem zu beheben, kann ReSharper die gesamte Aufrufsequenz in einem einzigen Toolfenster darstellen. Dies wird Call Tracking (Aufruferfassung) genannt und ermöglicht Ihnen, Aufrufketten in Ihrem Code anzuzeigen und durch diese zu navigieren.

Dank der Unterstützung für Ereignisse, Schnittstellen und Closures, ist die Aufruferfassung von ReSharper eine wesentliche Verbesserung gegenüber der Aufrufhierarchie von Visual Studio.

Um eine Aufrufsequenz darzustellen, wählen Sie ReSharper | Inspect | Outgoing Calls oder ReSharper | Inspect | Incoming Calls oder verwenden Sie die Funktion Inspect This.

Codeprobleme finden

ReSharper fasst sämtliche Codequalitätsprobleme, Redundanzen, Sprachverwendungsmöglichkeiten und Vorschläge für Codeverbesserungen in einem einzelnen Toolfenster namens Inspection Results zusammen.

Um Codeprobleme in einem bestimmten Geltungsbereich zu finden, wählen Sie ReSharper | Inspect | Code Issues in Solution oder ReSharper | Inspect | Code Issues in Current Project. Wählen Sie alternativ einen Knoten im Solution Explorer aus, machen Sie einen Rechtsklick darauf und wählen Sie Find Code Issues.

Im Fenster Inspection Results können Sie erkannte Probleme filtern, die Ergebnisse nach Problemtyp, Schweregrad, Kategorie und anderen Eigenschaften gruppieren und in eine Datei exportieren.

Werterfassung

Die Werterfassung (Value Tracking) gibt Ihnen wichtige Informationen über den Datenfluss in Ihrem Programm. Sie können an jeder Stelle in Ihrem Quellcode auf eine Variable, Parameter, Feld oder Eigenschaft zeigen und ReSharper diese inspizieren lassen. Sie können dann den Weg des Wertes durch Ihr Programm nachvollziehen: zurück zu dessen Quellen oder direkt zu den Stellen, an denen der Wert verwendet wird.

Die Werterfassung hilft Ihnen zu bestimmen, wie ein bestimmter fehlerhafter Wert möglicherweise an einen bestimmten Punkt in Ihrem Programm gelangt ist und wohin er möglicheweise als Nächstes weitergegeben wird. Dies hilft Ihnen, mögliche NullReferenceExceptions, unerwartetes Verhalten und die Gründe für fehlerhafte Werte zu untersuchen.

Um den Datenfluss zu visualisieren, dem ein bestimmter Wert folgt, wählen Sie ReSharper | Inspect | Value Origin oder ReSharper | Inspect | Value Destination oder verwenden Sie die Funktion Inspect This.

Code-Annotations

Manchmal verfügt nicht einmal eine so leistungsstarke Codeanalyse-Engine wie ReSharper über das notwendige Wissen, um bestimmte Probleme zu erkennen. Wenn beispielsweise eine Methode so entwickelt wurde, dass sie niemals null ausgibt und ihre Clients entsprechend entworfen wurden, dann wird keine Codeanalyse ein mögliches Problem finden, wenn jemand die Methode so geändert hat, dass sie null ausgibt.

In diesem und vielen anderen Fällen hilft das Framework JetBrains.Annotations beim Erkennen von Problemen, die ansonsten nicht gefunden werden könnten. In diesem Framework deklarierte Attribute können ReSharper Code auf die Weise analysieren lassen, wie es für Sie erforderlich ist.

Um die Code-Annotation-Attribute von ReSharper in Ihrem Quellcode zu verwenden, installieren Sie das entsprechende NuGet-Paket. Es genügt bereits, wenn Sie die Anweisung using JetBrains.Annotations; hinzufügen. ReSharper hilft Ihnen dann automatisch, das Paket herunterzuladen.

Dies überprüfen

Inspect ThisStrg+Umschalt+Alt+A – ist eine einzelne Tastenkombination für mehrere ReSharper-Funktionen für die Codeanalyse und -navigation, einschließlich Aufruferfassung, Werterfassung, Typhierarchie und Typabhängigkeitsdiagramm.

Hinweis zu Tastenkombinationen

Alle auf dieser Seite angegebenen Tastenkürzel sind in der standardmäßigen "Visual Studio"-Tastaturbelegung von ReSharper verfügbar. Weitere Informationen zu den beiden Tastaturbelegungen von ReSharper finden Sie in der ReSharper-Dokumentation.