Das ist neu in ReSharper 2022.2

ReSharper 2022.2 bietet Unterstützung für Sprachmerkmale von C# 11 wie erforderliche Member, als checked gekennzeichnete benutzerdefinierte Operatoren, Raw-Zeichenfolgen und List-Patterns. Bei der projektmappenweiten Analyse wurde der Speicherverbrauch erheblich optimiert. Darüber hinaus bringt dieses Release eine virtuelle Formatierungsfunktion mit, die den Code im gewünschten Format darstellt, ohne ihn auf der Festplatte neu zu formatieren. Mit einem Tool zur Festplattenbereinigung können Sie außerdem temporäre Dateien löschen, die von ReSharper bei der Arbeit an Ihrem Code generiert wurden.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar

C# 11

Dieses Release erweitert die Sprachunterstützung für die C# 11 Preview.

Erforderliche Member

Ab C# 11 können die Typen class, struct und record eine Liste mit erforderlichen Membern deklarieren. Diese Liste enthält alle Eigenschaften und Felder, die als erforderlich angesehen werden und bei der Initialisierung einer Instanz dieses Typs initialisiert werden müssen. Diese Listen werden automatisch vererbt und ermöglichen so eine einfache Programmierung mit weniger Standard-Codebausteinen und Codewiederholungen.

Neben der Unterstützung für required-Member in class, struct oder record-Typen stellt ReSharper weitere Unterstützung für das Schlüsselwort required bereit:

  • Die Code-Completion kennt das Schlüsselwort required.
  • Die meisten Kompilierfehler und -warnungen sind verfügbar.
  • Der Modifikator required wurde auf die Liste Modifiers order auf der Seite ReSharper | Options | Code Editing | C# | Syntax Style aufgenommen.

Wir bieten einen neuen Quick-Fix Add initializer for required members für Fälle, in denen ein Objekt eines Typs erstellt wurde, ohne die Member zu initialisieren. Der Fix generiert automatisch alle fehlenden „required“-Member für Ihr Objekt – Sie müssen nur die Werte der Member mit sinnvollen Daten füllen.

Als „checked“ gekennzeichnete benutzerdefinierte Operatoren

Als checked markierte benutzerdefinierte Operatoren werden mit Typen verwendet, bei denen ein arithmetischer Überlauf ein gültiges Konzept ist. ReSharper zeigt alle Kompilierfehler und -warnungen an. Um die Unterstützung von benutzerdefinierten checked-Operatoren abzurunden, wurde ReSharper um ein paar weitere Inspektionen und eine Kontextaktion erweitert.

Wir haben die Inspektion Unchecked/checked context is redundant aktualisiert, um checked-Operatoren, die in diesem Kontext verwendet werden, zu berücksichtigen.

Wenn Sie einige benutzerdefinierte Operatoren haben, von denen einige bereits über eine checked-Version verfügen, hilft ReSharper Ihnen dabei, das gesamte Set mit checked-Operatoren auszustatten. Die neue Inspektion The operator does not have a matching checked operator while other operators do informiert Sie über Operatoren, für die noch kein checked-Operator definiert ist, und schlägt einen Quick-Fix vor, um die checked-Versionen automatisch zu generieren.

Wenn Sie in Ihrem Code bisher noch keine checked-Operatoren verwendet haben und sie jetzt einführen möchten, hilft Ihnen die neue Kontextaktion Create matching checked operator dabei. Sie steht für jeden benutzerdefinierten Operator direkt im Menü Alt+Enter zur Verfügung und erzeugt mit einem Klick eine checked-Version des Operators.

Raw-Zeichenfolgen

Durch das neu eingeführte Konzept der „Raw“-Zeichenfolgen verbessert C# 11 die Möglichkeiten zum Einbetten von anderen Sprachen oder Textformaten in den C#-Code.

ReSharper bietet eine grundlegende Unterstützung für Raw-Zeichenfolgen. Diese umfasst Kompilierfehler, korrektes Parsen und Einfärben bei Verwendung der """-Syntax, gepaarte doppelte Anführungszeichen und Platzhalter in interpolierten Zeichenfolgen ({{...}}).

List-Patterns

C# 11 baut die verfügbaren Patterns weiter aus. Diese C#-Version führt das Pattern-Matching in listenähnlichen Strukturen ein, zum Beispiel Arrays, Zeichenfolgen und List<T>-ähnlichen Collections.

ReSharper 2022.2 bietet eine vollständige Unterstützung von List-Patterns, einschließlich Fehlerüberprüfung, Code-Completion und Codeanalyse. In Vorbereitung sind außerdem Codeinspektionen, die die Verwendung von List-Patterns in vorhandenem Code vorschlagen, sowie weitere Refactoring-Aktionen.

Weitere C# 11-Merkmale

Weitere C# 11-Merkmale

  • ReSharper 2022.2 bietet vollständige Unterstützung für den neuen vorzeichenlosen Rechtsverschiebungsoperator (>>>), inklusive der benutzerdefinierten Überladung des >>>-Operators.
  • ReSharper 2022.2 unterstützt die Vereinfachung der Verwendung von Span<char>-Werten als Ersatz für String-Instanzen, da C# 11 das direkte Pattern-Matching von String-Konstanten gegen Werte der Typen Span<char> und ReadOnlySpan<char> ermöglicht.

Optimierte projektmappenweite Analyse

In diesem Release haben wir die Speichernutzung von ReSharper bei eingeschalteter projektmappenweiter Analyse erheblich optimiert, sowohl in Bezug auf die Speicheroperationen (Anzahl der Arbeitsspeicher-Allokationen) als auch in Bezug auf die Speicherbelegung.

Bei der projektmappenweiten Analyse werden die Liste der Probleme in der Projektmappe sowie die Informationen zur Typ-/Membernutzung im Arbeitsspeicher gespeichert, um projektmappenweite Verwendungsberichte bereitzustellen (etwa bei Codeinspektionen wie „Öffentliches Member wird nie verwendet“). Die Nutzungsdaten sind „heiß“, d. h. sie müssen ständig aktualisiert werden, während Sie den Code bearbeiten, und können deshalb nicht auf die Festplatte ausgelagert werden. Dies kann einen beträchtlichen Speicherverbrauch verursachen, wenn in Ihrer Projektmappe viele Typen und Typmember verwendet werden. Wir haben überprüft, welche Daten gespeichert werden und dabei Muster gefunden, die es uns ermöglichten, die Daten zu deduplizieren und zu normalisieren. Durch den Einsatz spezieller Collection-Typen konnten wir die aktive Speichernutzung weiter reduzieren. Diese Optimierungen haben zu einer 5- bis 10-fachen Verbesserung des Speicherverbrauchs und einem schnelleren Laden der projektmappenweiten Analyse geführt.

Codeanalyse

Top-Level-Anweisungen

Mit .NET 6 wurden neue Projektvorlagen eingeführt, die die Top-Level-Anweisungen von C# 9 verwenden. Top-Level-Anweisungen vereinfachen die Deklaration einer Program-Klasse oder einer public static void Main(string[] args)-Methode. Aber manchmal ist eine explizite Startklasse mittels class Program erforderlich oder wünschenswert. ReSharper 2022.2 fügt die neue Kontextaktion To explicit 'Program' class hinzu, um den Code in diesen alten Stil zu konvertieren.

Wenn Sie wiederum eine Program-Startklasse haben und zu Top-Level-Anweisungen wechseln möchten, hilft Ihnen die neue Kontextaktion Convert to top-level code.

Aktualisierte INotifyPropertyChanged-Unterstützung

In diesem Release haben wir die INotifyPropertyChanged-Unterstützung überarbeitet. Externe Annotationen werden nicht mehr benötigt, um gängige INotifyPropertyChanged-APIs zu erkennen. Dadurch können wir für mehr MVVM-Frameworks und INotifyPropertyChanged-Basisklassen eine automatische Unterstützung realisieren. Wir stellen mittels einer SetField-Methode die kompakteste Syntax für INotifyPropertyChanged-Benachrichtigungen bereit.

Außerdem können jetzt property change-Benachrichtigungen für alle Eigenschaften des Typs bzw. der Datei hinzugefügt werden.

Refactorings im Alt+Enter-Menü

Damit Sie die verfügbaren Refactoring-Optionen leichter finden können, haben wir die meistverwendeten Refactorings überprüft und im Alt+Enter-Menü kontextabhängige Optionen bereitgestellt.

Wenn ein Codeabschnitt ausgewählt ist, können Sie über das Alt+Enter-Menü die Kontextaktion Extract method aufrufen.

Die Refactorings Change Signature, Transform Parameters, Convert to extension method und Convert Property To Method sind jetzt allesamt als Kontextaktionen für Membersignaturen verfügbar.

Weitere Verwendungsvorschläge für nameof-Operator

ReSharper 2022.2 erkennt jetzt Registrierungen von DependencyProperty in WPF-Projekten und schlägt die Verwendung des nameof-Operators vor, um den entsprechenden CLR-Eigenschaftsnamen zu erfassen. Die eingebauten Live-Vorlagen wurden ebenfalls überarbeitet und geben jetzt nameof anstelle von Zeichenfolgeliteralen aus.

In vielen Fällen erkennt ReSharper nicht, dass ein Zeichenfolgeliteral in Ihrem Code mit einer besonderen Bedeutung verwendet wird – z. B. um einen Member- oder Typnamen anzugeben. Für diese Fälle haben wir die neue Kontextaktion Capture element name eingeführt. Diese kann bei Zeichenfolgeliteralen verwendet werden, die auf eine Code-Entität im Kontext des Literals verweisen.

Strukturelles Suchen und Ersetzen

Quick-Fixes, die auf SSR-Mustern (Structural Search And Replace) basieren, können jetzt auf eine Datei, einen Ordner, ein Projekt oder die gesamte Projektmappe angewendet werden. Dies betrifft benutzerdefinierte Codemuster, die auf der Seite ReSharper | Options | Code Inspection | Custom Patterns definiert wurden, die in ReSharper integrierten Codeinspektionen und die entsprechenden SSR-basierten Quick-Fixes.

Sonstiges

ReSharper 2022.2 erkennt jetzt bestimmte Zuweisungsmuster in Ihrem Code und schlägt eine idiomatischere C#-Syntax mit Pattern-Matching vor.

ReSharper 2022.2 kann jetzt in einigen Fällen die Verwendung von is in ?:-Ausdrücken durch die kompaktere as-Syntax in Verbindung mit dem ??-Operator ersetzen – dadurch wird effektiv eine temporäre Variable eliminiert.

Virtuelle Formatierung

Wir haben den Virtual Formatter eingeführt, der Ihnen die Möglichkeit bietet, den Code in der gewünschten Formatierung anzuzeigen, ohne die Formatierung auf der Festplatte zu ändern. Dies gibt Ihnen zum Beispiel die Möglichkeit, Parameter virtuell in Spalten auszurichten oder Einrückungen zu vergrößern. Mit dieser Funktion möchten wir die Verständlichkeit und Wartbarkeit von Code verbessern und die Zugänglichkeit für sehbehinderte und neurodivergente Entwickler*innen optimieren. Um den Virtual Formatter mit vordefinierten Einstellungen zu aktivieren, gehen Sie zu ReSharper | Options | Environment | Inlay Hints | General. Um die Formatierung nach Ihren genauen Vorstellungen anzupassen, aktivieren Sie das Kontrollkästchen Use dedicated Virtual Formatter style settings und klicken Sie auf C#.

Festplattenbereinigung

Jetzt haben Sie die Möglichkeit, die temporären Dateien zu löschen, die von ReSharper bei der Arbeit an Ihrem Code generiert wurden. Unter Options bieten wir Ihnen auf einer neuen Seite folgende Möglichkeiten:

  • Bestimmte Standardpfade und Dateien beobachten, die ReSharper entfernen kann.
  • Eine benutzerdefinierte Pfadvorlage für Dateien hinzufügen, die entfernt werden sollen.
  • Für jede Pfadvorlage angeben, nach wie vielen Tagen ReSharper die Dateien als veraltet betrachten soll.
  • Überprüfen, wie viel Speicherplatz von Dateien belegt wird, die mit den einzelnen Pfadvorlagen übereinstimmen.
  • Eine automatische Bereinigung für veraltete Dateien einrichten, die in regelmäßigen Abständen durchgeführt wird (standardmäßig einmal täglich).
  • Die Bereinigung in unterschiedlichen Geltungsbereichen manuell durchführen.

JavaScript- und TypeScript-Unterstützung

Wie Sie vielleicht schon bemerkt haben, ist die JavaScript- und TypeScript-Unterstützung in ReSharper veraltet und langsam. Die derzeitige Implementierung macht es uns schwer, auf TS-Sprachänderungen zu reagieren und neue Versionen zeitnah zu unterstützen. Daher suchen wir nach einer besseren Möglichkeit, diese Sprachen zu unterstützen. Nach langen internen Diskussionen haben wir beschlossen, die derzeitige JS- und TS-Unterstützung auf Eis zu legen. Aus diesem Grund ist die TS/JS-Unterstützung in diesem Release standardmäßig deaktiviert. Um sie weiterhin zu verwenden, können Sie unter ReSharper | Options | Environment | Products & Features das Kontrollkästchen „JavaScript and TypeScript“ aktivieren.

Unreal Engine

ReSharper C++ führt Blueprint-spezifische Inlay-Hints ein und bietet Ihnen damit einen besseren Überblick über Ihren Code:

  • Sie werden über abgeleitete Blueprint-Klassen informiert und können sich die Liste aller Unterklassen ansehen.
  • Sie sehen, wenn eine UFunction Implementierungen in Blueprints hat und können alle solchen Fälle finden.
  • Sie können den Status einer UProperty sehr einfach überprüfen und feststellen, ob sie überschrieben wurde und welcher Wert in der Blueprint-Datei gespeichert ist.

Außerdem haben wir Inspektionen hinzugefügt, die Sie auf Unstimmigkeiten zwischen den im Code verwendeten Blueprint-spezifischen Funktionsbezeichnern und den Blueprints selbst hinweisen.

Verbesserte Unterstützung für native Systemaufrufe dotUltimate

dotTrace stellt jetzt in der Baumstruktur Timeline Call Tree mehr Details für native Systemaufrufe bereit, einschließlich Windows-Kernel-Aufrufe (ntoskrnl.exe), Gerätetreiber-Aufrufe (*.sys) und mehr.

Berücksichtigung von StyleCop.Analyzers-Einstellungen

ReSharper erkennt jetzt, wenn das Paket StyleCop.Analyzers von einem Projekt referenziert wird, und kann die Einstellungen des Pakets aus stylecop.json- und .ruleset-Dateien auslesen. Dateiheader und Einrückungseinstellungen werden aus stylecop.json übernommen, während die StyleCop-Regeln gemäß der aktiven .ruleset-Datei angewendet werden.

ReadyToRun- und NGen-Assemblies

  • Die Darstellung von ReadyToRun- (R2R) und NGen-Assemblies im Assembly Explorer wurde verbessert. Neben dem Namen der Assembly wird jetzt ein kleines Prozessorsymbol und das Label ngen oder R2R angezeigt.
  • Die Metadata-Baumstruktur verfügt über eine ReadyToRun-Kopfleiste.
Herunterladen

Kostenlose 30-Tage-Testversion verfügbar