Das ist neu in ReSharper 2023.2

ReSharper 2023.2 bietet eine verbesserte C#-Unterstützung – unter anderem durch neue Inspektionen für die Arbeit mit lokalen Funktionen und Raw-Zeichenfolgen sowie für die Behebung häufig vorkommender Probleme mit dem Entity-Framework. Dieses Release erweitert außerdem die Unterstützung für das C++-Refactoring und neue Sprachmerkmale von C++20 und C++23. Zu den Neuerungen in ReSharper 2023.2 gehören die unkomplizierte Erstellung von und Navigation in Unit-Tests, der prädiktive Debugger-Modus und der neue AI Assistant.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar

Wichtige Updates

Verbesserte C#-Unterstützung

Verbesserte C#-Unterstützung

ReSharper 2023.2 bietet neue Codeinspektionen und Quick-Fixes für die Arbeit mit Raw-Zeichenfolgen und lokalen Funktionen sowie für die Behebung von gängigen Entity-Framework-Problemen und redundanten Nullability-Direktiven. Die im Frühstadium befindliche Unterstützung für C# 12 umfasst Primärkonstruktoren und Lambda-Ausdrücke mit optionalen Parametern. Wir haben auch die Unterstützung für verworfene Werte und entsorgbare Ressourcen verbessert und neue Inline- und Interline-Hinweise hinzugefügt.

Mehr erfahren

Unit-Tests – Erstellung und Navigation

Die Unit-Test-Funktionalität von ReSharper hat ein großes Update erhalten – Sie können nun Navigationsfunktionen nutzen und Tests für Ihren Produktionscode erstellen!

Um einen Test zu erstellen, rufen Sie einfach die Aktion Generate Code auf und wählen Sie Unit Test oder drücken Sie Strg+U,C. Sie können den Namen der Testklasse festlegen, und ReSharper erstellt sogar ein neues Projekt mit Ihrem bevorzugten Testframework, falls noch keines vorhanden ist. Sobald der Test erstellt ist, können Sie mit der Aktion Navigate To oder durch Drücken von Strg+U,F zwischen Ihrer Implementierung und dem Testcode hin und her springen.

Weitere Informationen

AI Assistant

AI Assistant Beschränkter Zugang

Die IntelliJ-basierten IDEs und .NET-Tools enthalten in Version 2023.2 eine wichtige neue Funktion: AI Assistant. Die erste Serie der KI-Funktionen umfasst einen KI-Chat und integriert sich über Kontextaktionen auf natürliche Weise in einige zentrale Entwicklungs-Workflows, darunter das Erklären ausgewählter Codeabschnitte, das Beheben von potenziellen Problemen und das Generieren einer XML-Dokumentation.

Mehr erfahren

C#-Unterstützung

Verbesserte Unterstützung für Raw-Zeichenfolgen

Wir haben neue C#-Inspektionen und Kontextaktionen für die Arbeit mit Raw-Zeichenfolgen sowie verbesserte Eingabehilfen und neue Formatierungsoptionen eingeführt:

  • Die Inspektion Use raw string wandelt mehrzeilige Verbatim-Zeichenfolgen in Raw-Zeichenfolgen um.
  • Die Inspektion Simplify raw string entfernt überflüssige Anführungszeichen und Dollarzeichen.
  • Verschiedene Kontextaktionen helfen Ihnen, Anführungszeichen, geschweifte Klammern und Dollarzeichen hinzuzufügen oder zu entfernen und zwischen ein- und mehrzeiliger Darstellung zu wechseln.
  • Neue Codeformatierungsoptionen erlauben das Ausrichten bzw. Einrücken des Inhalts von Raw-Zeichenfolgen.
  • Die Eingabeunterstützung beim Drücken von Enter, Entf und Rücktaste wurde verbessert.

Lesen Sie den entsprechenden Blogartikel, um mehr über die verbesserte Unterstützung von Raw-Zeichenfolgen zu erfahren.

Inspektionen für häufig vorkommende Entity-Framework-Probleme

Inspektionen für häufig vorkommende Entity-Framework-Probleme

Wir haben mehrere neue Inspektionen, Quick-Fixes und kontextbasierte Navigationsoptionen für häufige Probleme hinzugefügt, die bei der Arbeit mit Datenbanken auftreten können, wenn ein Framework für objektrelationales Mapping (ORM) wie z. B. das Entity Framework verwendet wird.

  • Gegen das „N+1“-Problem helfen die Inspektionen Possible multiple queries to the database for related entities (N+1 problem) und Possible multiple queries to the database (N+1 problem), ein entsprechender Quick-Fix sowie eine kontextbasierte bidirektionale Navigation, um die Stellen in Ihrem Code zu untersuchen, die vom N+1-Problem betroffen sein könnten.
  • Neben der Erkennung von N+1-Problemen haben wir eine weitere Inspektion eingeführt, die bei der Arbeit mit dem Entity-Framework nützlich sein kann: Query can return incomplete data for related entities. Außerdem stehen Ihnen ab sofort ein Quick-Fix und eine kontextbasierte bidirektionale Navigation zur Untersuchung dieses Problems zur Verfügung.

Lesen Sie diesen Blogartikel, um mehr über die Inspektionen für das Entity-Framework zu erfahren.

Inspektionen für die Arbeit mit lokalen Funktionen

ReSharper 2023.2 führt zwei neue Inspektionen mit dazugehörigen Quick-Fixes ein, die die Lesbarkeit des Codes bei Verwendung von lokalen Funktionen verbessern:

  • Die IDE empfiehlt, am Ende einer Methode vor lokalen Funktionen eine explizite return- oder continue-Anweisung einzusetzen.
  • Die IDE schlägt vor, lokale Funktionen an das Ende einer Methode oder eines Blocks zu verschieben und sie mit einer expliziten return-, continue- oder einer anderen Sprunganweisung vom ausführbaren Code zu trennen.

In Fällen, in denen Sie den Code nicht ändern können oder wollen, zeigt ReSharper 2023.2 zwischen den Zeilen einen return- bzw. continue-Hinweis vor lokalen Funktionen an, um auch ohne Codeänderung das Verständnis zu erleichtern.

Weitere Details zu den neuen Inspektionen finden Sie in diesem Blogartikel.

Inspektionen für #nullable-Direktiven und NRT-Annotationen

Inspektionen für #nullable-Direktiven und NRT-Annotationen

Für #nullable-Direktiven und NRT-Annotationen stehen jetzt mehrere neue Inspektionen zur Verfügung:

  • Die Inspektion Redundant nullable directive.
  • Die Inspektion Unused nullable directive.
  • Eine Inspektion, die auf Situationen hinweist, in denen Annotationen für nullfähige Verweistypen (NRT) im Widerspruch zu den JetBrains.Annotations-Attributen eines Basismembers stehen.

Um mehr über diese Inspektionen zu erfahren, lesen Sie bitte diesen Blogartikel.

Verbesserte Navigation ab var-Deklarationen

Verbesserte Navigation ab var-Deklarationen

Alle Navigationsaktionen (Go to…, Find Usages usw.) schlagen jetzt bei der Navigation ab einer var-Deklaration mit einem gängigen Wrapper-Typ den zugrunde liegenden Typ vor. Zum Beispiel schlägt ReSharper vor, zu Person zu navigieren, wenn Sie die Aktion Go to declaration auf das var-Schlüsselwort einer Variablen mit dem Typ ImmutableArray<Person>? anwenden.

Weitere Informationen dazu finden Sie in diesem Blogartikel.

Primärkonstruktoren C#-12-Preview

Die Version 2023.2 unterstützt Primärkonstruktoren für Nicht-Record-Klassen und -Structs aus der C#-12-Preview. Mehrere Inspektionen weisen auf Typen hin, deren Initialisierung durch die neuen Primärkonstruktoren vorgenommen werden kann, und mit einem Quick-Fix kann die Anzahl der Codewiederholungen erheblich reduziert werden.

Manchmal kommt es vor, dass nach einer Änderung die Initialisierung des Typs weniger trivial ist und nicht mehr mittels Primärkonstruktor erledigt werden kann. Für solche Fälle haben wir eine Reihe von Kontextaktionen eingeführt, um Primärkonstruktor-Parameter durch Konstruktoren und gewöhnliche Felder zu ersetzen.

Um diese und viele weitere Funktionen für Primärkonstruktoren in Aktion zu sehen, lesen Sie den separaten Blogartikel zu diesem Thema.

Unterstützung für Standard-Parameterwerte in Lambdas

Unterstützung für Standard-Parameterwerte in Lambdas C#-12-Preview

Im Rahmen unserer Bemühungen zur Unterstützung der C#-12-Sprachupdates haben wir uns die Standard-Parameterwerte in Lambda-Ausdrücken vorgenommen. Neben einer Reihe von Standard-Warnmeldungen in Verbindung mit der Erkennung dieser Syntax haben wir auch die bestehende Inspektion The parameter has the same default value angepasst, um Standard-Parameterwerte in Lambdas zu berücksichtigen. Nähere Informationen finden Sie hier.

Bessere Unterstützung von entsorgbaren Ressourcen

ReSharper 2023.2 führt zwei neue Codeinspektionen ein, um die Entsorgung eines Objekts besser zu kontrollieren:

  • Die Inspektion Return of a variable captured by ‘using’ statement warnt Sie, wenn das zurückgegebene Objekt sofort entsorgt wird.
  • Die Inspektion Return of a task produced by ‘using’-captured object erkennt Szenarien, in denen ein Task durch ein Objekt erzeugt wird, das durch eine using-Anweisung erfasst und dann sofort zurückgegeben wird.

Wir haben auch die Funktion Generate dispose pattern verbessert, um die Schnittstelle IAsyncDisposable zu unterstützen und Ressourcen durch Generierung einer async-Methode freigeben zu können.

Weitere Informationen zu diesen Neuerungen finden Sie hier.

Bessere Unterstützung für verworfene Werte in C#

Die Codeanalyse wurde um nützliche Funktionen zur Unterstützung des Verwerfens von Werten in C# erweitert:

  • Mit Push-to-Hint können Sie jetzt unkompliziert die Namen und Typen der verworfenen Werte überprüfen.
  • Die Warnung The _ name is typically reserved for local parameters without usages weist auf Variablen und Parameter hin, die trotz des Namens _ verwendet werden. Diese sehen wie verworfene Werte aus, sind aber in Wirklichkeit genau das Gegenteil.
  • Die Inspektion Use discard assignment kann unbenutzte Variablen und Parameter durch einen verworfenen Wert ersetzen.

Weitere Informationen zur verbesserten Unterstützung von verworfenen Werten erfahren Sie in diesem Blogartikel.

Inlay-Hinweise

Neue Inlay-Hinweise für eine bessere Lesbarkeit des Codes

Inlay-Hinweise mit Tupel-Komponentennamen

Bei der Übergabe eines Wertes an ein Tupel-Argument oder einen Rückgabetyp können in C# die Komponentennamen weggelassen werden. Ohne Namen ist es jedoch schwieriger, die Bedeutung der einzelnen Komponenten zu erkennen, ohne den Zieltyp nachzuschlagen. Bei der Zuweisung des Tupels (null, false) zum Beispiel dürfte in vielen Fällen ein Nachschlagen erforderlich sein, um die Bedeutung der einzelnen Komponenten zu verstehen.

Inlay-Hinweise sind in solchen Situationen eine nützliche Hilfe. ReSharper 2023.2 zeigt Inlay-Hinweise mit Tupel-Komponentennamen an, wenn diese Namen nicht bereits aus dem Komponentenausdruck ersichtlich sind. Dadurch ist es viel einfacher, den Code auf einen Blick zu verstehen.

Für Null- und Standardkomponenten zeigt ReSharper 2023.2 Hinweise auf den Zieltyp an, auch wenn die Zielkomponente keinen expliziten Namen hat. Ausgenommen sind dabei die Typen string und object, da diese Information in der Regel nicht zum Verständnis beiträgt.

Eine weitere häufige Situation, in der Namen die Verständlichkeit verbessern können, sind Dekonstruktionsmuster, bei denen ein expliziter Name entweder aus der Deconstruct-Methode oder aus Quelltupel-Komponenten bekannt ist. Diese Hinweise wurden konzipiert, um Ihnen zusätzlichen Kontext bereitzustellen, wenn ein Muster für sich genommen nicht genügend Daten enthält, um zu verstehen, wonach gesucht wird – z. B. value is ({ }, true, null).

Verbesserte Unterstützung von #pragma warning-Anweisungen

Verbesserte Unterstützung von #pragma warning-Anweisungen

Mit #pragma-Anweisungen können Sie Compiler-Warnungen anhand ihrer IDs unkompliziert deaktivieren oder wieder aktivieren. Diese IDs eignen sich zwar gut für die Kommunikation mit dem Compiler, sind aber für Menschen möglicherweise etwas kryptisch. Ohne ein umfassendes Wissen ist es nicht sofort offensichtlich, worauf sich eine ID wie CS0168 oder CS0618 bezieht.

Hinweise für LINQ

Hinweise für LINQ

LINQ-Abfragen können komplex sein und verschiedene Transformationen und Projektionen umfassen. Das Debuggen von komplexen LINQ-Abfragen kann daher zeitaufwändig sein, insbesondere bei Verwendung von großen Datensammlungen. Damit Sie die Ausgabewerte bei jedem Abfrageschritt unkompliziert untersuchen können, zeigt ReSharper jetzt beim Debugging Zwischenergebnisse als Inlay-Hinweise an.

Durch die Editor-Hinweise, die Zwischenergebnisse anzeigen, können Sie unerwartete Werte oder fehlerhafte Transformationen einfacher erkennen.

C++-Unterstützung

Safe Delete

Safe Delete

ReSharper C++ führt das Refactoring Safe Delete ein, mit dem Sie Symbole ohne Risiko aus Ihrem Quellcode entfernen können. Dieses Refactoring ist für Klassen, Funktionen, Variablen, Enums, Namensräume und sogar Concepts verfügbar.

Bevor ein Symbol gelöscht wird, sucht ReSharper C++ nach dessen Verwendungen und zeigt Ihnen eine Vorschau der Codeänderungen an, sodass Sie sicher sein können, dass alle Löschungen beabsichtigt sind. Wenn Sie versuchen, ein komplexes Element wie eine Klasse oder einen Namensraum zu löschen, prüft ReSharper C++ rekursiv die Verwendungen aller Member des Elements.

Weitere Sprachmerkmale aus C++20 und C++23

Weitere Sprachmerkmale aus C++20 und C++23

Dieses Release unterstützt mehrere neue Sprachmerkmale, darunter if consteval, die Standardbibliotheksmodule von C++23, das Attribut [[no_unique_address]] und statische Operatoren (operator()/operator[]).

Das ist neu in ReSharper C++ 2023.2

Codeformatierung

Hinweise für LINQ

Formatierung von API-Aufrufketten

ReSharper 2023.2 führt einige neue Optionen für die C#-Codeformatierung ein, um verkettete Methodenaufrufe leichter lesbar zu machen.

Die erste Formatierungsoption legt fest, ob vor dem ersten Methodenaufruf ein Zeilenumbruch erfolgen soll. Die zweite Option ist für Situationen gedacht, in denen Methoden und Eigenschaften gemischt aufeinanderfolgen. Sie bestimmt, ob nach einer Eigenschaft ein Zeilenumbruch eingefügt werden soll.

AI Assistant Beschränkter Zugang

AI Assistant ist nicht im Lieferumfang von ReSharper enthalten und muss separat installiert werden. Aktuell gibt es eine Warteliste für die Nutzung von AI Assistant.

In unserer Webhilfe erhalten Sie weitere Informationen zu AI Assistant und zur Installation mit der Toolbox-App oder dem dotUltimate-Installationsprogramm.

Chatten mit AI Assistant

Chatten mit AI Assistant

Der AI Assistant in ReSharper kennt automatisch Ihre Entwicklungsumgebung, also die Programmiersprachen, Frameworks, Bibliotheken und Technologien, die in Ihrer Projektmappe verwendet werden. Dank dieser Informationen kann die KI treffsicherere und konkretere Antworten auf Ihre Fragen geben.

Wenn Sie die Option Smart Chat verwenden, kann AI Assistant auf konkrete Dateien und Symbole Bezug nehmen, Codefragmente oder die letzten Änderungen abrufen und nach Verwendungen bestimmter Methoden suchen. Dadurch erhalten Sie noch zielgenauere Vorschläge.

Kontextaktionen

Kontextaktionen

Wenn das AI-Assistant-Plugin installiert ist, stehen Ihnen in den Kontextaktionen von ReSharper verschiedene KI-gestützte Optionen zur Verfügung. AI Assistant kann Sie wie folgt unterstützen:

  • Den ausgewählten Code erklären
  • Potenzielle Probleme erkennen
  • Code für nicht implementierte Methoden vorschlagen
  • XML-Dokumentation generieren

Prädiktiver Debugger Beta Visual Studio 2022

Der in ReSharper 2023.2 eingeführte prädiktive Debugger kann alle möglichen Zustände vorhersehen, die durch die Ausführung eines Programms entstehen können, ohne dass Sie das Programm tatsächlich ausführen müssen. Dies bietet Ihnen folgende Möglichkeiten:

  • Erwartete Variablenwerte anzeigen.
  • Nicht ausgeführte Programmteile visuell in den Hintergrund rücken.
  • Warnen, wenn die weitere Ausführung zu einer Ausnahme führt.

Der prädiktive Debugger bietet ganz neue Einblicke in die Ausführung Ihres Programms. Außerdem können Sie mit unterschiedlichen Werten experimentieren und Fehler in Ihrem Code beheben, ohne den Debugging-Prozess bei jeder Änderung neu starten zu müssen.

Sie können den prädiktiven Debugger unter ReSharper | Options | Tools | Debugger | Editor Integration | Predictive debugger | Show predicted values (beta) aktivieren.

Weitere Informationen

Dieser Debugger befindet sich derzeit in der Betaphase. Damit er sein volles Potenzial erreichen kann, ist Ihr Feedback entscheidend. Bitte melden Sie daher unbedingt alle Fehler, die Ihnen auffallen, in unserem Issue-Tracker, ebenso wie alle Vorschläge oder Anforderungen, die Sie in Bezug auf diese Funktionalität haben.

Dekompilierer

Assembly-Diffs

ReSharper 2023.2 bietet Ihnen die Möglichkeit, zwei Assemblies detailliert zu vergleichen. Diese Funktion ist besonders nützlich, wenn Sie die Unterschiede zwischen zwei Versionen einer bestimmten Assembly untersuchen möchten, etwa um potenzielle Sicherheitslücken zu finden, die in einer neueren Version eingeführt wurden.

Um Assemblies zu vergleichen, klicken Sie im Toolfenster Assembly Explorer auf Compare Two Assemblies. Sie können sowohl Einzeldatei-Apps als auch .exe- oder .dll-Dateien zum Vergleich auswählen.

Klicken Sie hier, um mehr über diese Funktion zu erfahren.

Performance

In ReSharper 2023.2 haben wir unseren Caching-Ansatz für die Daten, die die IDE zum Funktionieren aller Systeme benötigt, überarbeitet. Wie in unzähligen Performancetests bestätigt, führt die neue Version zu einem spürbar verringerten Speicherplatzverbrauch bei jeder geöffneten Projektmappe. In der Praxis bedeutet dies insgesamt weniger Zeitaufwand für das Lesen und Schreiben von Festplattendaten und ein schnelleres Laden von Projektmappen.

Eine weitere Änderung, die zu verkürzten Ladezeiten beim Öffnen von Projektmappen geführt hat, ist das Refactoring der Logik für die interne Komponentenerstellung in ReSharper. Weitere Informationen finden Sie hier.

Verschiedenes

Dynamische Programmanalyse

  • Zuvor kam es bei DPA manchmal vor, dass pausierte Debugging-Zeit fälschlicherweise als Code-Ausführungszeit verbucht wurde, was zu falsch positiven Warnungen vor Datenbankproblemen führte. Dieses Problem wurde in Version 2023.2 behoben.
  • Bei DPA wurden bisher große Codeblöcke hervorgehoben, wenn die entsprechende Aufrufliste Speicherallokationen durch Lambda-Funktionen enthielt. Die Hervorhebung erfolgt jetzt zielgenauer.
Herunterladen

Kostenlose 30-Tage-Testversion verfügbar