ReSharper 2021.1 bietet eine aktualisierte Codeanalyse, Unterstützung für ASP.NET-Routenvorlagen, Umbenennung von Tupelkomponenten und vieles mehr.
Kostenlose 30-Tage-Testversion verfügbar
Die Inspektion Merge into pattern kann jetzt mit viel mehr Codemustern umgehen. Zusammenführen von Nullprüfungen mit anderen Prüfungen zu einer einzigen Musterprüfung:
Umwandlung von Prüfungen mit ?.
-Ausdrücken für bedingten Zugriff in verschachteltes Pattern-Matching:
Verflachung von if
-Hierarchien durch Zusammenführen der Prüfungen:
Und schließlich können Muster in einem einfachen Dekonstruktionsmuster var (a, b)
durch Erweiterung in die vollständige Form zusammengeführt werden:
Wir haben die Unterstützung für Records in C# 9.0 erweitert. Die Refactorings Extract interface und Extract superclass funktionieren jetzt mit Record
-Deklarationen. Dasselbe gilt für File Layout und die Features im Zusammenhang mit der XML-Dokumentation.
Wir haben eine Reihe von neuen Inspektionen und Aktionen eingeführt. Redundant explicit property declaration für Eigenschaften in Record
-Deklarationen kann hilfreich sein, wenn Sie Ihren Code zu Records mit Positionsparametern und impliziten Eigenschaftsdeklarationen migrieren möchten. Ein entsprechender Quick-Fix Remove explicit property ist ebenfalls enthalten.
Wenn Sie einen Record
in eine Klasse
umwandeln möchten, kümmert sich die Aktion To class um die Positionsparameter und den primären Konstruktor. Eine Aktion To record für die umgekehrte Umwandlung steht ebenfalls zur Verfügung.
Wenn Sie Positionsparameter und einen primären Konstruktor in gewöhnliche Eigenschaften, einen normalen Konstruktor und eine explizite Deconstruct()
-Methode umwandeln möchten, hilft Ihnen die Kontextaktion To explicit constructor.
Wir helfen Ihnen auch, Ordnung in Ihrem Code zu schaffen: Die Inspektion Redundant 'record' type declaration body und der dazugehörige Quick-Fix ersetzen einen leeren Record
-Typdeklarationskörper durch ein Semikolon.
Find usages sucht nun nach den Verwendungen des primären Konstruktors eines Records sowie den Verwendungen einer impliziten Deconstruct()
-Methode.
Wir freuen uns, Ihnen eine neue Inspektion vorstellen zu können: Inline temporary variable. Manchmal verwenden wir in einem Programm denselben Wert unter verschiedenen Namen. Wäre in solchen Fällen nicht eine transparentere Lösung möglich? Sicher – und ReSharper hilft Ihnen, diese Lösung umzusetzen.
Dabei kann sogar der eine oder andere Bug zum Vorschein kommen, wenn die temporäre Variable mit einem anderen Wert initialisiert oder später im Code geändert werden sollte.
Logische not-Muster können Ihre Typprüfungen viel lesbarer machen. ReSharper bietet Ihnen daher die Möglichkeit, die !()
-Syntax durch ein not-Muster zu ersetzen.
ReSharper schlägt nun vor, statt Slice
und Substring
den Bereichsoperator zu verwenden, wenn dadurch der Code einfacher wird.
Die Inspektion Namespace does not correspond to file location wird jetzt in Dateien mit Top-Level-Code unterdrückt.
Eine weitere neue Inspektion prüft, ob eine Auto-Eigenschaft durch eine berechnete Eigenschaft ersetzt werden kann. Ein passender Quick-Fix kann die Ersetzung gleich durchführen.
In Bezug auf die Unterstützung von C# 10.0 haben wir bereits die ersten Schritte unternommen und ReSharper das Arbeiten mit dem Feature Constant interpolation strings beigebracht.
In einem kommenden Blogbeitrag werden wir die Codeanalyse in Version 2021.1 detailliert beleuchten – bleiben Sie gespannt!
Routenvorlagen werden in MVC-Anwendungen häufig verwendet, um die Zuordnung von HTTP-Anfragen zu den Endpunkten der Anwendung zu konfigurieren. In Version 2021.1 unterstützt ReSharper Routenvorlagen durch Strukturnavigation, Inspektionen und Quick-Fixes. Sehen wir uns einige Beispiele an.
Die einfachsten Inspektionen prüfen Routenvorlagen auf Syntaxfehler: versehentliche Verwendung einer Catch-All-Route in der Mitte der Vorlage, Deklarieren des Catch-All-Parameters als optional, Angabe eines Standardwerts für einen optionalen Parameter usw.
Routenparameter können zu interessanten Problemen führen. Was passiert, wenn Sie im Controller und in der Aktion einen identisch benannten Parameter deklarieren? ReSharper weist Sie darauf hin.
Andererseits kommt es auch vor, dass Parameter fehlen. In diesem Fall schlägt ReSharper vor, sie entweder über das Attribut des Controllers oder über die Aktion hinzuzufügen. Wenn es eine Typeinschränkung gibt, wird diese verwendet, um den Typ des Parameters abzuleiten.
Apropos Einschränkungen: Diese eignen sich gut für eine Codeanalyse. ReSharper prüft, ob die angewendete Einschränkung korrekt ist und ob ein Parameter die Einschränkung tatsächlich erfüllt.
ReSharper versucht zudem anhand der Einschränkung zu erkennen, ob der Parametertyp enger definiert werden könnte, und schlägt in diesem Fall vor, den Typ zu ändern. Wenn Sie absichtlich einen anderen Typ für den Parameter verwendet haben, können Sie den Vorschlag einfach verwerfen.
ReSharper erkennt auch benutzerdefinierte Einschränkungen. Sollten sie einmal nicht erkannt werden, annotieren Sie Ihre Einschränkungsklasse mit dem Attribut [RouteParameterConstraint]
, das von JetBrains.Annotations bereitgestellt wird.
Wie bei anderen Features aus unserem Standard-Funktionsumfang stehen Ihnen Funktionen zur Code-Completion, Strukturnavigation und Codeumstellung zur Verfügung.
Sie müssen Routenparameter nicht mehr manuell umbenennen: Das Rename-Refactoring unterstützt Sie dabei.
Alle oben genannten Features funktionieren derzeit für attributbasiertes Routing. Wir freuen uns auf Ihr Feedback zu diesen Neuerungen.
Weitere Informationen zu den Routenvorlagen in ASP.NET Core finden Sie in diesem Blogbeitrag.
Benannte Tupel gehören seit C# 7 zum Alltag, aber bisher mussten ihre Komponenten manuell umbenannt werden. Damit ist jetzt Schluss – Sie können nun einfach das Refactoring verwenden.
Eine neue Navigationsaktion ist ebenfalls verfügbar: Navigate to Windows Explorer. Sie finden sie im Menü Navigate | Navigate to. Alternativ können Sie Strg+Umschalt+A drücken und den Namen der Aktion eingeben. Dies kann für Dateiaktionen nützlich sein. Sie könnten zum Beispiel die Datei selbst oder deren Pfad innerhalb des Repositorys kopieren oder den VCS-Verlauf der Datei mit Git-Erweiterungen für Windows Explorer untersuchen.
Wir arbeiten zwar weiterhin daran, ReSharper in seine Einzelteile zu zerlegen, für den „Out-of-Process“-Modus anzupassen und wieder zusammenzusetzen – aber nichtsdestotrotz beheben wir konkrete Leistungsprobleme, wo immer wir sie finden. Hier sind einige Highlights.
Wir haben einige neue Einstellungen eingeführt:
new()
-Klammern ein Leerzeichen gesetzt werden soll. Bei benutzerdefinierten Namensregeln haben wir die Reihenfolge der Anwendung geändert – spezifischere Regeln gehen jetzt vor.
Und schließlich haben wir eine neue Aktion für die Auswahlformatierung hinzugefügt. Damit können Sie ReSharper anweisen, nur die Einrückungen des ausgewählten Codes anzupassen, anstatt eine komplette Neuformatierung durchzuführen.
Wir haben auch eine Reihe von Fehlern behoben – die Details finden Sie in unserem Issue-Tracker.
EditorConfig wird in der .NET-Community immer beliebter, und wir verbessern kontinuierlich die Integration des Tools in ReSharper. Wir haben folgende Änderungen vorgenommen:
csharp_indent_case_contents_when_block
wird jetzt unterstützt. [InlineAutoData]
keine redundanten Argumente enthält, und warnt Sie, wenn das [TestFixture]
- oder [Test]
-Attribut für die Testklasse oder -methode fehlt. ReSharper C++ 2021.1 unterstützt mehrere neue Sprachmerkmale aus C++20 und C++17: Klassentypen in Nichttyp-Vorlagenparametern, Argument-Ableitungsregeln für C++20-Klassenvorlagen und noexcept
als Teil des Funktionstyps. Es gibt auch neue Code-Completion-Vorschläge für Coroutinen, die sowohl bei der Standard-Completion als auch in Postfix-Completion-Vorlagen verfügbar sind: co_await
, co_yield
und co_return
.
Wir haben eine Sammlung von Syntaxstil-Einstellungen eingeführt, mit denen Sie bei Syntaxkonstruktionen Ihren bevorzugten Codestil durchsetzen können. Mithilfe von unterstützenden Inspektionen, Quick-Fixes und den Kontextaktionen Apply Syntax Style und Cleanup selection können Sie den neuen Stil problemlos auf Ihren Codebestand anwenden und neuen Code entsprechend formatieren.
Kostenlose 30-Tage-Testversion verfügbar