Das ist neu in ReSharper Ultimate 2019.3

ReSharper Ultimate 2019.3 bietet einen neuen Lokalisierungsmanager, Type-Hints und eine weiter verbesserte Unterstützung für C# 8, C++ 20 und die Unreal Engine. Es gab Verbesserungen bei der Navigation, den Codestilen und der Handhabung von Unit-Tests, und die Befehlszeilentools von ReSharper und dotTrace funktionieren jetzt unter Linux und macOS.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar

Lokalisierungsmanager

Lokalisierungsmanager

Der brandneue Localization Manager hilft Ihnen, effizienter zu arbeiten, wenn Sie zahlreiche .resx-Dateien in Ihrer Projektmappe haben. Alle Inhalte in Ihren .resx-Dateien werden in einer einzigen Tabelle dargestellt, sodass Sie den aktuellen Lokalisierungsstatus Ihrer Anwendung oder Website auf einen Blick erfassen und fehlende Ressourcenwerte in jeder Kultur schnell finden können.

Sie haben folgende Möglichkeiten:

  • Lokalisierte Ressourcen finden, hinzufügen, bearbeiten, umbenennen, in Inline-Code umwandeln, verschieben oder sicher löschen
  • Alle Ressourcen finden, bei denen lokalisierte Werte fehlen
  • Alle Gebietsschemata verbergen, die Sie gerade nicht brauchen.
  • .resx-Dateien für fehlende Kulturen erstellen
  • Einen Tooltip mit einer detaillierten Beschreibung der Probleme mit der Zelle anzeigen.

Sie finden den Localization Manager unter ReSharper | Windows oder im Kontextmenü des Solution-Explorers.

Weitere Informationen finden Sie unter Localization Becomes Easier with the Localization Manager (Einfachere Lokalisierung mit dem Localization Manager).

Noch bessere C#-8-Unterstützung

Noch bessere C#-8-Unterstützung

Die neue ReSharper-Version kommt mit C# 8 noch besser zurecht. Zu den Neuerungen zählen:

  • Ein besseres Verständnis der Nullable-Reference-Typen, einschließlich Unterstützung für notnull-Einschränkungen
  • Zieltyp-basierte switch-Ausdrücke
  • Erstunterstützung für Standard-Schnittstellenmethoden
  • Neuer Hint „Local function can be static“ inkl. passendem Quick-Fix
  • Ein neuer Quick-Fix, der Annotations und Warnungen im Zusammenhang mit nullable in einer Datei, einem Projekt oder allen Projekten einer Projektmappe aktiviert.
  • Ein neuer Quick-Fix zum Hinzufügen des Attributs EnumeratorCancellation zu CancellationToken-Parametern von async-Iteratoren.

Außerdem wurde die Codeinspektion „Type or type member is never used“ in zwei separate Optionen aufgeteilt, eine für Typen („Type is never used“) und eine für Typmember („Type member is never used“).

Codegenerierung

Codegenerierung

Die Generate-Aktion weiß jetzt mehr über C# 8 und gibt dieses Wissen gern an Sie weiter:

  • Ein neuer Quick-Fix Add missing arms sorgt dafür, dass Enum-Werte lückenlos geprüft werden.
  • Ein neuer Quick-Fix mit Kontextaktion generiert Typmuster in switch-Ausdrücken.
  • Nullability wird bei der Generierung von equality- und relationalen Membern/Vergleichern berücksichtigt.

Eine neue Option bietet zudem die Möglichkeit, beim Generieren von Gleichheitsmembern oder Gleichheitsvergleichern für C# und VB.NET System.HashCode zur Implementierung von GetHashCode zu verwenden und dadurch Ihren Code zu verschlanken.

Codeformatierung

Codestil

In dieser Version haben wir einen weiteren oft geäußerten Wunsch implementiert. Die C#-Benennungseinstellungen unterstützen jetzt das Lesen von und den Export nach EditorConfig.

Neben dieser großen Neuerung helfen Ihnen mehrere kleinere Änderungen, den Stil Ihres Codes noch präziser zu steuern:

  • Verwenden Sie var statt expliziter Typen bevorzugt dann, wenn der Typ des Initialisierungsausdrucks offensichtlich ist? Dann werden Sie sich freuen, dass ReSharper jetzt „offensichtlichere“ Fälle erkennt. Es gibt auch einen Kompatibilitätsmodus, der dem Roslyn-Verhalten entspricht.
  • Eine neue Codestiloption, die mit StyleCop und Roslyn kompatibel ist, fügt Klammern hinzu, um bei einer verschachtelten Gruppe von Operatoren der gleichen Prioritätsklasse die Prioritäten zu verdeutlichen. Wenn Sie sich zum Beispiel nicht mehr sicher sind, ob && oder || Vorrang hat, hilft Ihnen diese Option durch das Setzen der Klammern.
  • Comment Code rückt Kommentare jetzt standardmäßig ein. Mit der neuen Einstellung „Place comments at first column when commenting out code“ können Sie dieses Verhalten deaktivieren.
  • Auf den Optionsseiten zum Einrichten der Einrückungen wird jetzt die korrekte Benachrichtigung angezeigt, wenn die Einstellung Autodetect indent size and value aktiviert ist.
  • Es gibt auch einen Tooltip, der die Funktionen Configure formatting und Autodetect formatting auf den Optionsseiten für die C#-Formatierung erläutert.
Plattformübergreifende ReSharper-Befehlszeilentools

Plattformübergreifende ReSharper-Befehlszeilentools

Wir wurden oft nach der Möglichkeit gefragt, die ReSharper-Befehlszeilentools auf einem unter Linux gehosteten CI-System auszuführen. Lange Zeit lautete unsere Antwort: „Nein, das ist leider unmöglich.“ Aber wir haben uns viel Mühe gegeben, und schließlich gelang es uns, alle Windows-spezifischen Teile zu entfernen und alles auch auf der Mono-Runtime unter Linux und macOS zum Laufen zu bekommen. Aber keine Sorge, unter Windows wird immer noch das .NET-Framework verwendet.

Wir sind stolz, Ihnen die ReSharper-Befehlszeilentools ab sofort auch unter Linux und macOS anbieten zu können. Jetzt steht der Verwendung der leistungsstarken Codeanalyse von ReSharper auf Nicht-Windows-Betriebssystemen nichts mehr entgegen!

Type-Hints

Type-Hints

Wir hoffen, dass Sie die in ReSharper 2019.1 eingeführten Hints zu Parameternamen und Code-Annotations gerne nutzen. In dieser Version gehen wir noch einen Schritt weiter und bieten Ihnen jetzt Type-Hints. Diese sind verfügbar für:

  • Lambda-Parameter
  • Alle var-Vorkommen, einschließlich bei Pattern-Matching und Tupel-Dekonstruktion
  • Range-Variablen in LINQ-Anweisungen
  • Am Ende der Zeile in Methodenaufrufketten
Navigation und Verwendungssuche

Navigation und Verwendungssuche

Als Entwickler möchten wir hin und wieder gerne wissen, an welchen Stellen in unserem Code eine bestimmte Referenz verwendet wird. Es war schon länger möglich, die Aktion „Find dependent code“ für eine Referenz auszuführen, um alle Vorkommen von Typen oder Typmembern aus dieser Referenz zu finden. Allerdings gab es immer auch Einschränkungen.

In Version 2019.3 konnten wir einige davon beseitigen:

  • Find dependent code funktioniert jetzt für NuGet-Referenzen und kann nicht nur auf ein Projekt, sondern auch auf die gesamte Projektmappe angewendet werden!
  • Die „Navigate to“-Aktionen wurden um Consuming APIs erweitert. Diese Option listet alle Methoden auf, die Objekte eines bestimmten Typs in ihren Parametern entgegennehmen.
  • Das Fenster Find results für Find dependent code wurde um neue Filter ergänzt.
  • Sie können jetzt zu den externen Quellen von NuGet-Packages navigieren, die über ein Quellensymbol-Package verfügen.
Unit-Test-Update

Unit-Test-Update

Die Unit Testing-Toolfenster sind bereits hervorragend ausgestattet und decken die meisten Anforderungen ab. Aber wir hatten doch noch ein paar Ideen, wie wir Ihnen eine noch umfassendere Individualisierung der Unit-Test-Ansichten ermöglichen konnten, und setzten diese Ideen auch prompt um.

  • Mit der erweiterten Group by-Funktionalität in den Toolfenstern Unit Test Explorer und Unit Test Session können Sie jetzt eigene Gruppierungen erstellen. Mit dem neuen Element Duration können Sie jetzt Unit-Tests anhand der Ausführungsdauer gruppieren.
  • Im Toolfenster Unit Test Session können Sie Unit-Tests anhand des Ziel-Frameworks filtern – nützlich, wenn Sie mehrere Frameworks verwenden (was heutzutage keine Seltenheit ist) und einige davon ausblenden möchten.
Geänderte Hervorhebung von Bezeichnern

Geänderte Hervorhebung von Bezeichnern

Die Hervorhebung von Bezeichnern wurde komplett überarbeitet. Für eine noch präzisere Codehervorhebung haben wir weitere Farbeinstellungen hinzugefügt (zu finden unter Tools | Options | Fonts and Colors). Die neuen Farbeinstellungen umfassen:

  • Einen allgemeinen, sprachübergreifenden Abschnitt für die Farben von Elementen
  • Spezielle Einstellungen für C#-Farben
  • Neue Farbeinstellungen für Konstrukte in verschiedenen Sprachen
Weitere Features

Weitere Features

  • Neue NUnit-Inspektionen decken kombinatorische Unit-Tests und die einzelnen Parameter von parametrisierten Unit-Tests ab.
  • Das Parameter Info-Popup ist jetzt für Tupel verfügbar.
  • Bei der Xamarin-Unterstützung gibt es einige wichtige Verbesserungen – so werden jetzt zum Beispiel x:DataType und das Class-Attribut unterstützt.
  • Die Eingabeunterstützung lässt jetzt beim Löschen neuer Zeilen und beim Löschen mit der Rücktaste vor einer neuen Zeile ein Leerzeichen übrig, wenn dieses zum Trennen von Token oder aufgrund der Formatierungsregeln benötigt wird.
C++20-Unterstützung

C++20-Unterstützung

Der C++20-Standard ist bereits feature-complete, und wenn er im kommenden Jahr offiziell verabschiedet wird, können C++-Entwickler endlich eine Reihe von lang erwarteten Neuerungen nutzen. Viele dieser Funktionen werden von ReSharper C++ 2019.3 bereits unterstützt – inklusive erweiterter Analysen und Insights.

ReSharper C++ weiß zum Beispiel, dass Aggregate durch eine in Klammern gesetzte Werteliste initialisiert werden können, und dass bei Funktionsvorlagen in einigen Fällen ein zusätzlicher ADL erforderlich ist.

Die Concepts-Unterstützung in ReSharper C++ ist nicht auf den Parser beschränkt, sondern umfasst auch die Umbenennen-Refaktorierung und die Verwendungssuche. Zudem bietet die Codeanalyse bei Fehlern im Zusammenhang mit Concepts detaillierte Informationen. Wenn beispielsweise die Auflösung einer Überladung fehlschlägt, weil die Anforderungen eines Concepts nicht erfüllt sind, werden alle Details in einem Tooltip angezeigt. ReSharper 2019.3 zeigt den Tooltip mit den Fehlerdetails einer Überladungsauflösung sogar in Farbe an.

In unserem Blog haben wir eine Beitragsreihe zu C++20 und ReSharper C++ gestartet, in der wir die neuen Sprachmerkmale und deren Übernahme in ReSharper C++ vorstellen.

Unterstützung für Unreal Engine 4

Unterstützung für Unreal Engine 4

Wenn ReSharper C++ erkennt, dass Sie an einem Unreal-Engine-Projekt arbeiten, passt es sein Verhalten an UE4-spezifische Anforderungen an.

Die Postfix-Template „new“ für UCLASS wird zu einem ordnungsgemäßen Factory-Funktionsaufruf erweitert (der das erstellte Objekt im Garbage Collector registriert). Sie können jetzt entsprechend bezeichnete Live-Templates nutzen, um USTRUCT/UCLASS/UENUM/UENUMCLASS zu generieren.

Die Smart-Pointer der Unreal Engine (TSharedPtr, TSharedRef, TWeakPtr, TUniquePtr) werden jetzt von ReSharper C++ analog zu std::shared_ptr/std::unique_ptr behandelt. Dies bedeutet, dass Funktionen wie Parameterinfos, Codeanalyse und Postfix-Codevervollständigung auch für Smart-Pointer funktionieren.

Schließlich gibt es bei UE4-Projekten auch einige Performance-Verbesserungen. So haben wir zum Beispiel einen Hänger im UE4-Editor nach „Refresh Visual Studio Project“ behoben.

Siehe Neuerungen in ReSharper C++.

Befehlszeilen-Profiler auf macOS und Linux

Befehlszeilen-Profiler auf macOS und Linux dotUltimate

Der Befehlszeilen-Profiler ist endlich auch für macOS und Linux verfügbar. dotTrace.sh bietet die gleiche Funktionalität wie sein Windows-Pendant und ist als .tar.gz-Archiv oder NuGet-Package erhältlich.

Erfahren Sie mehr unter Das ist neu in dotTrace 2019.3.

dotCover-Verbesserungen dotUltimate

dotCover 2019.3 bietet mehrere Verbesserungen:

  • Unterstützung für Unity 2018.3 und höher auf allen Betriebssystemen. Für eine Coverage-Analyse von Unity-Tests müssen Sie JetBrains Rider verwenden.
  • Unterstützung für Microsoft Fakes.
  • Gruppieren von Coverage-Ergebnissen nach verschachtelten Namespaces in Rider und Visual Studio sowie in Berichten des dotCover-Konsolentools.

Erfahren Sie mehr unter Das ist neu in dotCover 2019.3.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar