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.
Kostenlose 30-Tage-Testversion verfügbar
Dieses Release erweitert die Sprachunterstützung für die C# 11 Preview.
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:
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
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.
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 ({{...}}
).
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.
>>>
), inklusive der benutzerdefinierten Überladung des >>>
-Operators. 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. 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.
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.
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.
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.
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.
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.
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.
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#.
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:
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.
ReSharper C++ führt Blueprint-spezifische Inlay-Hints ein und bietet Ihnen damit einen besseren Überblick über Ihren Code:
UFunction
Implementierungen in Blueprints hat und können alle solchen Fälle finden. 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.
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.
ngen
oder R2R
angezeigt. Kostenlose 30-Tage-Testversion verfügbar