Das ist neu in ReSharper 2025.1

ReSharper 2025.1 bietet Erstunterstützung für .NET 10 und die neuen Sprachmerkmale der C# 14 Preview. Außerdem enthält dieses Release neue Inspektionen für häufige C#-Fallstricke sowie mehrere Verbesserungen für den Entwicklungsalltag. Die Performance wurde durch ein überarbeitetes System für die Internalisierung von Zeichenfolgen und die überarbeitete Unterstützung für Razor-Tag-Helper und Blazor-Komponenten erheblich verbessert. Ebenfalls neu in diesem Release ist die Integration von dotMemory in Visual Studio, und ein neues Plugin für die Team-Codequalitätslösung Qodana ermöglicht eine bessere Integration in CI/CD-Pipelines.

C#-Unterstützung

Unterstützung für .NET 10 Preview und C# 14

ReSharper 2025.1 bietet Erstunterstützung für .NET 10 und die neuen Sprachmerkmale der C# 14 Preview.

nameof mit ungebundenen generischen Typen

Bisher mussten bei Verwendung von nameof alle Typargumente angegeben werden, was viel zu umständlich war. C# 14 erlaubt die Nutzung von nameof(List<>) ohne eine explizite Auflistung der Typargumente. ReSharper erkennt jetzt überflüssige generische Typargumente in nameof-Ausdrücken und kann diese mit einem Quick-Fix vereinfachen.

Implizite Span<T>-Konvertierungen

Mit neuen, impliziten Konvertierungen zwischen ReadOnlySpan<T>, Span<T> und T[] erlaubt C# 14 eine intuitivere Verwendung von Spans im Code. Durch eine vollständige Unterstützung dieser Konvertierungsregeln hilft Ihnen ReSharper, effizienten und modernen C#-Code zu schreiben.

Modifikatoren bei einfachen Lambda-Parametern

In C# 14 können Sie Parameter-Modifikatoren wie ref, out, in und scoped in Lambda-Ausdrücken verwenden, ohne Parametertypen explizit anzugeben. ReSharper kann überflüssige Typangaben mit einem Quick-Fix entfernen.

In unserem Blog können Sie alles über die verbesserte C#-Sprachunterstützung in ReSharper und Rider erfahren.

Neben der Unterstützung für die Sprachmerkmale von C# 14 enthält dieses Release mehrere neue Inspektionen, die häufige Fallstricke und Effizienzprobleme in unterschiedlichen C#-Versionen erkennen:

Neue Kontextaktion konvertiert Interpolationen in Verkettungen

Mit einer neuen Kontextaktion können Sie String-Interpolationen in eine Verkettung zurückverwandeln. ReSharper unterstützt schon lange die Umwandlung von String-Verkettungen "Id = " + IdNr in Interpolationen $"Id = {IdNr}" oder string.Format("Id = {0}", IdNr). Dieses Update schließt nun den Kreis, indem es eine umgekehrte Umwandlung ermöglicht, um Ihnen mehr Flexibilität bei der Strukturierung von String-Ausdrücken zu bieten.

Redundante Codeduplikate

ReSharper erkennt und markiert jetzt noch mehr Code-Duplikationsmuster in bedingten Konstrukten wie if und switch und schlägt Refaktorierungsoptionen vor, die Ihren Code sauberer und wartungsfreundlicher machen.

Fehlerhafte Verwendung von CancellationToken

ReSharper erkennt jetzt Fälle, in denen ein CancellationToken auf Methodenebene fälschlicherweise anstelle eines lokalen Tokens verwendet wird. Mit einem Quick-Fix können Sie den falschen Token ersetzen oder mehrere Tokens mit CancellationTokenSource.CreateLinkedTokenSource() zusammenführen.

nameof für namentlichen Verweis auf Enum-Member verwenden

Der Aufruf von .ToString() bei Enum-Membern kann unnötigen Laufzeit-Overhead verursachen. ReSharper schlägt jetzt vor, stattdessen nameof(meinEnum.Member) zu verwenden, um Performance und Verständlichkeit zu verbessern.

Namensvorschläge für Tupelkomponenten

ReSharper 2025.1 schlägt explizite Tupel-Komponentennamen anstelle generischer ItemN-Namen vor, um Ihren Code leichter lesbar und selbstdokumentierend zu machen.

Inspektion Inexact stream reads

ReSharper warnt Sie jetzt, wenn die Methoden Stream.Read() und ReadAsync() verwendet werden, ohne ihre Rückgabewerte zu überprüfen, was zu unvollständigem Einlesen von Daten führen kann. Stattdessen wird vorgeschlagen, durch die Verwendung von .ReadExactly() das korrekte Einlesen sicherzustellen.

Warnung vor Modifikationen in der Debug.Assert-Inspektion

Da Debug.Assert-Aufrufe in RELEASE-Builds entfernt werden, warnt ReSharper vor Assertions, die den Codezustand verändern und in Produktionscode zu unerwartetem Verhalten führen können.

C++-Unterstützung

Die C++-Unterstützung in ReSharper 2025.1 wurde in mehrfacher Hinsicht verbessert:

  • Neues Inline Macro-Refactoring.
  • Unterstützung mehrerer neuer GNU-Spracherweiterungen.
  • Optimierte Speichernutzung in Unreal-Engine-Projekten mit vielen Blueprint-Assets.
  • Clang-Tidy 20 im Installationsumfang und Unterstützung für die Nutzung von Clang-Tidy auf ARM-Hardware.
  • Aktualisierte GoogleTest-Unterstützung.

Auf der Seite Das ist neu in ReSharper C++ 2025.1 können Sie mehr über die C++-Updates erfahren.

Code-Refactoring

Refactoring Toggle <ImplicitUsings>

Durch Implizite Usings werden gängige Namensräume automatisch inkludiert, um Boilerplate-Code zu reduzieren. ReSharper bietet jetzt eine einfache Möglichkeit, implizite Usings projektweit ein- oder auszuschalten, wobei überflüssige explizite Usings entfernt bzw. notwendige hinzugefügt werden.

Überarbeitetes Refactoring Transform Parameters

ReSharper hat das Refactoring Transform Parameters modernisiert und um Unterstützung für Wertetupel, Records und asynchrone Szenarien erweitert, um die Flexibilität und Wartbarkeit Ihres Codes zu verbessern.

Codeformatierung

Kontextaktion Chop Formatting

Eine neue Formatierungsaktion wendet Chop-Formatting auf verschiedene C#-Konstrukte an, um die Lesbarkeit und Einheitlichkeit Ihres Codes zu verbessern.

Weitere Verbesserungen

  • Kommentare werden jetzt bei der Formatierung korrekt umbrochen und nach // werden Leerzeichen eingefügt. Sie finden einige aufschlussreiche Screenshots in diesen Tickets: [RSRP-225809], [RSRP-78312].
  • Wir haben auch eine Option hinzugefügt, um vor einem einzelnen Lambda-Ausdruck-Argument in Methodenaufrufen keinen Zeilenumbruch einzufügen. [RSRP-467905]

Benutzererfahrung

Verbesserungen bei der Aktivierung und Kennzeichnung der Push-to-Hint-Funktion

Wir haben das Verhalten von Push-to-Hint in ReSharper optimiert, um unbeabsichtigte Aktivierungen durch Konflikte mit anderen Strg-basierten Tastenkürzeln zu vermeiden. Außerdem haben wir einen visuellen Indikator eingeführt, der anzeigt, wann der Modus aktiv ist.

Kontext-Hervorhebungen für erweiterte Typenlisten

ReSharper bietet jetzt eine visuelle Hervorhebung für Member, die Basisklassen erweitern oder bestimmte Schnittstellen implementieren, wenn Sie den Cursor auf einen Typnamen in der Basistypen-Klausel platzieren.

Performance

Speichernutzung

Für dieses Release haben wir unser System für die String-Internalisierung komplett überarbeitet. IDEs verarbeiten eine enorme Anzahl von Zeichenfolgen – Quellcode, Syntaxelemente, Symbolnamen, Dateipfade. Dadurch ist eine effiziente String-Verarbeitung von entscheidender Bedeutung. Unser neues System für die String-Internalisierung speichert im Durchschnitt viermal so viele einzigartige Zeichenfolgen wie die Vorversion und belegt dabei nur etwa halb so viel Speicher, was bei großen .NET-Projekten Ressourcen freisetzt.

Blazor- und Razor-Verbesserungen

Die Razor-Tag-Helper und die Blazor-Komponentenunterstützung wurden für 2025.1 komplett neu aufgebaut. Dieser lang erwartete Umbau reduziert die Analysezeit bei großen ASP.NET-Projektmappen mit intensiver Komponentennutzung um 5% bis 10%. Außerdem kommt es beim Bearbeiten von .cshtml/.razor-Dateien weniger häufig zu Neuanalysen und falschen Fehlerberichten.

Neues Statusupdate zur Out-of-Process-Ausführung von ReSharper

Wir haben die neueste Out-of-Process-(OOP)-Implementierung von ReSharper in den vergangenen vier Wochen intern getestet und sind von den bisherigen Ergebnissen wirklich begeistert. Wir arbeiten zwar noch daran, alle Funktionen zu unterstützen und bekannte Probleme zu beheben, aber die Umsetzung der Kernfunktionalität, die ReSharper zu einem unverzichtbaren Bestandteil Ihres Entwicklungsworkflows macht, befindet sich auf einem guten Weg.

In unserem neuesten Blogbeitrag finden Sie ein vollständiges Statusupdate zur OOP-Version von ReSharper.

Arbeitsspeicher-Profiling dotUltimate

Snapshot-Analyse mit dotMemory in Visual Studio

dotMemory ist jetzt vollständig in Microsoft Visual Studio integriert. Zuvor konnte das Profiling zwar in Visual Studio gestartet werden, zur Ergebnisanalyse war jedoch ein Wechsel zur dotMemory-Anwendung erforderlich. Jetzt können Sie sowohl das Profiling Ihrer Anwendung als auch die Analyse Ihrer Arbeitsspeicher-Snapshots direkt in der IDE durchführen.

Codequalität

„Qodana Team Code Quality“-Erweiterung

Qodana ist ein Codequalitäts-Tool, das mit JetBrains-Inspektionen Teams dabei unterstützt, Prüfungen und Audits durchzuführen und Quality Gates in ihrer bevorzugten CI/CD-Pipeline einzurichten. Jetzt können Sie die Qodana-Codequalitäts-Erweiterung über Ihren ReSharper-Installer herunterladen, um Qodana Cloud oder selbst gehostete Qodana-Projekte in Visual Studio zu integrieren.

Erkennen Sie Codeprobleme, Bugs und Schwachstellen, führen Sie Analysen direkt in Ihrer Pipeline aus und sehen Sie sich dann die Befunde in Ihrer gewohnten IDE an, um den Kontext besser überblicken und Lernmöglichkeiten nutzen zu können. Sie können das Tool auch als eigenständiges Programm mit dem ReSharper-Installer herunterladen.

Game-Entwicklung

Unity-Plugin für ReSharper

ReSharper 2025.1 enthält ein Unity-Plugin im Installationsumfang, das alle wichtigen Workflows in der Spieleentwicklung unterstützt. Das Plugin bietet Code-Completion für Unity-Ereignisfunktionen und -APIs, Tooltip-Zusammenfassungen mit Links zur Unity-Dokumentation sowie spezialisierte Inspektionen zur Erkennung häufiger Fallstricke. Die integrierte Unterstützung für ShaderLab-Dateien umfasst Syntaxhervorhebung, Code-Completion und Fehlererkennung. Außerdem berücksichtigt das Plugin .meta-Dateien automatisch und erkennt die implizite Verwendung von Feldern und Methoden in Unity-Szenen, Prefabs und Assets.

ReSharper C++ bietet weiterhin dedizierte Unterstützung für die Unreal-Engine-Entwicklung.

Dekompilierer

ReSharper 2025.1 setzt mehrere Verbesserungen im Decompiler um, erweitert die Unterstützung der neuesten C#-Sprachmerkmale und bietet eine leichter lesbare Codedarstellung. Das ist neu:

  • Unterstützung für required-Member.
  • Unterstützung für den in C# 13 eingeführten Typ System.Threading.Lock.
  • Unterstützung für ref-Felder und scoped-Parameter-Modifikatoren.
  • Unterstützung für die generische Anti-Einschränkung allows ref struct.
  • Musterbasierte using-Anweisungen für ref struct-Typen.
  • Unterstützung für die String-Interpolation.
  • Bestimmte Ganzzahlen-Konstanten im dekompilierten Code enthalten jetzt eine kommentierte hexadezimale Darstellung für eine bessere Lesbarkeit.
  • Unterstützung für dateiweite Namensräume.

Weitere nützliche Verbesserungen

Neue Postfix-Vorlage: .inject

Die primären Konstruktoren in C# 12 haben die Dependency-Injection vereinfacht. Die neue Postfix-Vorlage .inject optimiert die Dependency-Injection in Konstruktoren weiter, indem sie automatisch einen Parameter im primären Konstruktor anlegt und einen sinnvollen Namen vorschlägt.

Unterstützung für strukturierte Protokollierung

ReSharper bietet jetzt erweiterte Unterstützung für strukturierte Protokollierung, um Entwickler*innen beim effizienten Schreiben und Analysieren von Protokollen zu helfen.

Sprachinjektion in Rückgabewerten

ReSharper erlaubt jetzt Sprachinjektions-Annotationen bei Methoden-Rückgabewerten und erweitert dadurch die bisherige Unterstützung für Parameter, Felder und Eigenschaften.

Verbesserte mehrzeilige Todo-Kommentare

Bisher mussten mehrzeilige Todo-Kommentare zur Fortsetzung eingerückt werden. ReSharper 2025.1 hebt diese Einschränkung auf, sodass es einfacher ist, mehrzeilige Todos zu schreiben und zu verwalten. Dabei wird eine vorhandene Einrückung beibehalten.

OSZAR »