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.
Kostenlose 30-Tage-Testversion verfügbar
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:
Contains(item)
-Prüfung vor dem Hinzufügen des Elements zu HashSet
oder anderen Collections, die die Schnittstelle ISet
implementieren. ContainsKey(key)
-Prüfung vor dem Hinzufügen des Elements zu Dictionary
oder anderen Collections, die die Schnittstelle IDictionary
implementieren. TryAdd(key, value)
für Dictionary
oder von Dictionary
abgeleitete Collections, wenn möglich. TryGetValue(key, out value)
mit IDictionary
-Collections, wenn möglich. 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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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
.
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.
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.
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.
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“.
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.
Kostenlose 30-Tage-Testversion verfügbar