Das ist neu in ReSharper 2023.1

ReSharper 2023.1 verbessert die C#-Unterstützung unter anderem durch Inspektionen zur Optimierung und Beschleunigung Ihrer Arbeit mit unterschiedlichen Arten von Collections sowie durch mehr Anpassungsmöglichkeiten bei der Einführung von Nullprüfungen in Ihrem Code. Dieser Build enthält außerdem Updates für C++20-Module, Erstunterstützung für C++23, eine Vorschaufunktion für die Makroersetzung sowie Call-Tracking für C++. Die Nutzungserfahrung in den Bereichen Unit-Tests und Codebereinigung wurde ebenfalls verbessert.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar

C#-Unterstützung

Anzahl von Suchvorgängen in Collections reduzieren

Wir haben einige Inspektionen mit entsprechenden Quick-Fixes eingeführt, um Ihre Arbeit mit unterschiedlichen Arten von Collections zu optimieren und zu beschleunigen, indem die Anzahl der Suchvorgänge in Collections reduziert wird:

  • Entfernen einer Contains(item)-Prüfung vor dem Hinzufügen des Elements zu HashSet oder anderen Collections, die die Schnittstelle ISet implementieren.
  • Entfernen einer ContainsKey(key)-Prüfung vor dem Hinzufügen des Elements zu Dictionary oder anderen Collections, die die Schnittstelle IDictionary implementieren.
  • Verwendung von TryAdd(key, value) für Dictionary oder von Dictionary abgeleitete Collections, wenn möglich.
  • Verwenden von TryGetValue(key, out value) mit IDictionary-Collections, wenn möglich.

Syntaxstil für Nullprüfungs-Patterns

Mit der neuen Einstellung Syntax style können Sie bei not null-Prüfungen einen einheitlichen Stil innerhalb der Patterns durchsetzen. Dabei stehen zwei Optionen zur Verfügung: leere rekursive Pattern-Syntax { } und negiertes Pattern not null. Letzteres ist die Standardeinstellung. Sie können das Verhalten jederzeit auf der Seite ReSharper | Options | Code Editing | C# | Syntax Style anpassen.

Die Verwendung des Patterns „not null“ hat den Nachteil, dass keine Variablennamen für den geprüften Wert verwendet werden können, während dies bei einem rekursiven Pattern wie { LastName: { } lastName } möglich ist. Wir haben die Kontextaktion Add pattern variable für das Pattern not null eingeführt, um nach Ausdrücken zu suchen, die denselben Wert verwenden, und alle Verwendungen durch den neu eingeführten Variablennamen zu ersetzen und so alle Zugriffe auf denselben Wert zu konsolidieren.

ArgumentNullException.ThrowIfNull als Nullprüfungsstil

In .NET 6.0 SDK wurde mit ArgumentNullException.ThrowIfNull eine neue API für null-Prüfungen eingeführt. Unsere Codeanalyse-Engine erkennt diesen Prüfansatz seit der Einführung, aber es gab bisher keine Möglichkeit, diese API als Standardstil für die von ReSharper erzeugten null-Prüfungen zu verwenden. In Version 2023.1 haben wir ein ArgumentNullException.ThrowIfNull-Pattern unter ReSharper | Options | Code Editing | C# | Null checking hinzugefügt.

Gemeinsame Eigenschaftsmuster extrahieren

Wenn Sie das Pattern-Matching für Eigenschaften intensiv nutzen, sollten Sie unsere neue Inspektion samt dazugehörigem Quick-Fix ausprobieren, um gemeinsame Elemente aus mehreren Eigenschaftsmustern zu extrahieren. Der Quick-Fix Extract common property pattern reduziert Codewiederholungen, indem gemeinsame Eigenschaftsmuster in ein übergeordnetes Muster verschoben werden.

Entfernen leerer Regionen

C#-Entwickler*innen verwenden oft die Direktive #region und die Codefaltung in der IDE, um ihren Code zu strukturieren. Beim Refaktorieren kann es vorkommen, dass einige #region-Abschnitte leer bleiben, was bei eingeklapptem Code irreführend aussehen kann. Mit dieser neuen Codeinspektion können Sie leere #region-Abschnitte in eingeklapptem Zustand finden und mit einem entsprechenden Quick-Fix bereinigen.

Ersetzen von span.SequenceEqual("str")

Die Codeanalyse umfasst jetzt eine Inspektion, die das Ersetzen von span.SequenceEqual("Text") durch span is "Text" empfiehlt – eine sauberere und unkompliziertere Lösung mittels C#-Syntax statt dem Aufruf einer Funktion.

Festlegen einer Rückgabetyp-Spezifikation für Lambdas

In C# können Lambda-Ausdrücke implizit typisierte Parameter und abgeleitete Rückgabetypen haben. Es ist jedoch möglich, explizite Typen anzugeben, um bei komplexen Überladungsauflösungen für Klarheit zu sorgen. Ab C# 11 können auch Lambda-Ausdrücke mit einer Rückgabespezifikation versehen werden. ReSharper 2023.1 unterstützt Sie dabei mit der neuen Kontextaktion Insert return type specification. Die Aktion kann auf alle Gültigkeitsbereiche angewendet werden – Methode, Klasse, Datei, Projekt oder die gesamte Projektmappe.

Inspektion Pattern is redundant

In C# sind or/and/not-Muster nützlich für kompakte Wertprüfungen, sie sind aber weniger leicht zu erkennen als herkömmliche Ausdrücke wie ||/&&/!. Sie können außerdem schwer zu lokalisierende Fehler verursachen, wenn Klammern vergessen werden. Um Sie dabei zu unterstützen, warnt Sie die Codeanalyse in Version 2023.1 vor „toten“ Prüfungen innerhalb komplexer Muster.

Kontextaktion Convert to list pattern

Die Unterstützung für List-Patterns in C# 11 wird kontinuierlich verbessert. Mit der neuen Kontextaktion Convert to list pattern können Sie Collection-Längenprüfungen durch eine List-Pattern-Syntax ersetzen. Dies funktioniert in jedem Kontext, in dem eine Collection-Längenprüfung durchgeführt werden kann.

C++-Unterstützung

Vorschau auf Makroersetzungen

Vorschau auf Makroersetzungen

Wenn Sie den Mauszeiger auf ein Makro bewegen, wird jetzt im Tooltip eine Vorschau auf die Makroerweiterung inkl. vollständiger Syntaxhervorhebung und korrekter Codeformatierung angezeigt. Die Kontextaktion Substitute macro call steht Ihnen weiterhin zur Verfügung, um die Makroerweiterung direkt im Code zu prüfen, aber die Sofortvorschau bietet eine weitere Erleichterung. Das Quick-Documentation-Popup (Strg+Umschalt+F1) ermöglicht außerdem das Anklicken einer beliebigen Entität in der Ersetzungsvorschau, um die dazugehörige Dokumentation anzuzeigen.

Call-Tracking

Call-Tracking

Call-Tracking ist endlich in ReSharper C++ verfügbar! Sie haben jetzt die Möglichkeit, Aufrufketten in der Hierarchie der eingehenden Aufrufe anzuzeigen und in ihnen zu navigieren. Doppelklicken Sie im Call-Tracking-Ergebnisfenster auf den Hierarchieeintrag, um zum entsprechenden Aufruf im Editor zu navigieren, oder erweitern Sie einen beliebigen Knoten, um dessen eingehenden Aufrufe zu prüfen.

Das ist neu in ReSharper C++ 2023.1

UX/UI-Änderungen

Update-Dialog

Der überarbeitete Update-Dialog in ReSharper 2023.1 bietet Informationen zu den Änderungen, die im neuesten verfügbaren Build enthalten sind. Dadurch können Sie leichter entscheiden, ob Sie das Update herunterladen oder überspringen möchten.

Neuer Tastenkürzel-Dialog

Ab Version 2023.1 wird Ihnen beim ersten Start von ReSharper ein Tastaturkürzel-Bildschirm angezeigt, der Ihnen die Möglichkeit gibt, das bevorzugte Tastenkürzel-Schema auszuwählen.

Codebereinigung

Reformat inactive preprocessor branches in file ist ein neuer Aufgabentyp, den wir in ReSharper 2023.1 eingeführt haben. Mit dieser Aufgabe können Sie inaktive Präprozessor-Zweige neu formatieren. Die Aufgabe funktioniert nur bei C#-Quellcode und kann nur auf die gesamte Datei angewendet werden.

Diese Aufgabe kann keine Codeabschnitte neu formatieren, die hinter einer #if-Präprozessordirektive versteckt sind, die immer falsch ist. Vereinfachte Beispiele für diese Einschränkung sind die Konstrukte #if false ... #endif und #define A #if !A ... #endif.

Unit-Tests

Textsuchfilter, die auf Unit-Test-Baumstrukturen in den Toolfenstern Session und Explorer angewendet wurden, werden jetzt beim Ausführen von Tests über die Run-Schaltflächen in der Toolleiste berücksichtigt. Es werden nur die Knoten aufgelistet und ausgeführt, die den Suchkriterien entsprechen.

Rename-Refactoring

Wir haben die Art und Weise verbessert, wie ReSharper bei der Umbenennung von Dateien in einem Projekt vorgeht. Ab diesem Build wird beim Umbenennen einer Datei in Ihrer Projektmappe ein Dialog mit der Option angezeigt, alle relevanten Symbole (Klassen, Schnittstellen usw.) passend zur Änderung ebenfalls umzubenennen.

dotTrace auf macOS und Linux Beta dotUltimate

dotTrace ist jetzt auch unter Linux und macOS als eigenständiges Programm verfügbar. Dadurch steht Ihnen jetzt auf diesen Betriebssystemen der gesamte Performance-Profiling-Workflow zur Verfügung, einschließlich der Erfassung und Analyse von Performance-Snapshots.

Plugin-Migration

Solange die referenzierten APIs gültig und unverändert sind, werden ReSharper-Plugins ab jetzt automatisch von einer Version zur nächsten migriert.

Ein integrierter API-Verifizierer prüft die installierten Plugins auf Binärkompatibilität und migriert die geeigneten Plugins. Plugin-Autoren werden außerdem automatisch über den JetBrains Marketplace benachrichtigt, wenn die in ihren Plugins verwendeten APIs nicht mehr im SDK enthalten sind.

Verschiedenes

CSS-Unterstützung standardmäßig deaktiviert

Aufgrund der geringen Nachfrage nach CSS in ReSharper fiel es uns zunehmend schwer, die Priorisierung der Anpassungen an die jeweils neueste Sprachversion zu rechtfertigen. Daher haben wir beschlossen, die CSS-Unterstützung auf Eis zu legen, bis wir eine bessere Möglichkeit zur Unterstützung der Sprache gefunden haben.

Ab ReSharper 2023.1 ist die CSS-Unterstützung daher standardmäßig deaktiviert. Wenn Sie die Sprache weiterhin verwenden möchten, können Sie sie hier wieder aktivieren: ReSharper | Options | Environment | Products & Features | Kontrollkästchen „CSS“.

Entwicklungsende für Visual Studio 2010 und 2012

ReSharper und die .NET-Tools unterstützen derzeit sieben Hauptversionen von Visual Studio, von 2010 bis zur neuesten Version, 2022. Ab 2023.1 verschlanken wir diese Liste, indem wir die Unterstützung für die beiden ältesten Versionen – Visual Studio 2010 und Visual Studio 2012 – einstellen.

Weitere Informationen

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar