ReSharper C++ optimiert Visual Studio für C++-Entwickler mithilfe von Codeanalyse in Echtzeit, Quick-Fixes, leistungsfähiger Suche und Navigation, intelligenter Codevervollständigung, Refaktorierungen, einer Vielzahl an Optionen zur Codegenerierung sowie anderen Funktionen, mit deren Hilfe Sie Ihre Produktivität im Arbeitsalltag steigern können.
ReSharper C++ beginnt sofort mit der Codeanalyse, sobald Sie Ihr Projekt im Editor von Visual Studio öffnen, und analysiert die Dateien kontinuierlich, während Sie an Ihnen arbeiten, um Fehler und mögliche Probleme noch vor der Kompilierung zu erkennen.
Mithilfe von mehr als 40 Quick-Fixes können Sie viele der gefundenen Codeprobleme sofort beheben. Sobald Sie das Symbol einer Glühbirne links neben Ihrem Code sehen, können Sie Alt+Eingabe drücken, um einen vorgeschlagenen Quick-Fix zu übernehmen.
Wenn z. B. eine nicht initialisierte Variable gefunden wird, können Sie sie sofort mit dem
Standardwert initialisieren. Andere Quick-Fixes erlauben das Hinzufügen von fehlenden #include
-Direktiven und
das Löschen von überflüssigen Qualifizierern in einer bestimmten Anweisung oder in einem größeren Bereich wie
einer Datei oder der gesamten Projektmappe.
Ein weiterer Vorteil von Quick-Fixes besteht darin, dass Sie Klassen, Methoden, Variablen, Eigenschaften und Felder verwenden können, noch bevor Sie sie deklarieren. Wenn ReSharper C++ ein nicht deklariertes Symbol findet, schlägt es ein Quick-Fix vor, um die entsprechende Symboldeklaration basierend auf ihrer Verwendung zu generieren.
ReSharper C++ kann für jeden beliebigen Bereich wie Datei, Projekt oder Projektmappe alle gefundenen Codeprobleme in einem speziellen Toolfenster anzeigen.
Find Code Issues läuft im Hintergrund, sodass Sie weiterhin im Code navigieren und ihn bearbeiten können, während ReSharper C++ eine Analyse ausführt und das Toolfenster Inspection Results aktualisiert.
Sobald die Ergebnisse fertig sind, können sie anhand verschiedener Kriterien gruppiert und nach bestimmten Arten von Problemen durchsucht werden. Darüber hinaus können Sie Berichte mit den Ergebnissen von Find Code Issues speichern und laden.
Codeinspektionen von ReSharper C++ sind auch über InspectCode verfügbar, ein kostenloses Befehlszeilentool, mit dem ReSharper-Inspektionen außerhalb von Visual Studio ausgeführt werden können.
Um InspectCode verwenden zu können, müssen Sie das Paket mit den Befehlszeilentools herunterladen und entpacken und die Datei InspectCode.exe mit Ihrer Projektmappendatei als Parameter ausführen. Weitere Informationen zur Verwendung von InspectCode finden Sie in diesem Artikel.
ReSharper C++ bietet eine nahtlose Integration mit Clang-Tidy, einem leistungsfähigen Opensource-Tool zur Codeanalyse auf Basis des Clang-Compilers. Die Integration bietet Codeüberprüfungen und Quick-Fixes.
ReSharper C++ enthält eine Reihe von Syntaxstil-Einstellungen, mit denen Sie ReSharper dazu bringen können, Ihrem bevorzugten Codestil zu folgen und diesen auf Ihren gesamten Codebestand anzuwenden.
Sie können Ihre Syntaxstil-Einstellungen auf der Seite Code Editing | C++ | Syntax Style anpassen. Die gewählten Optionen werden sowohl für die Codegenerierung als auch für die Codestil-Durchsetzung verwendet.
ReSharper C++ will highlight style violations and offer you quick-fixes to help eliminate them. Alle Syntaxstil-Quick-Fixes können auf Gültigkeitsbereiche angewendet werden, einschließlich lokaler Bereiche wie Funktionskörper oder Klassendefinitionen.
Zur Umsetzung des gewählten Syntaxstils steht Ihnen die Codebereinigung oder die dedizierte Aktion Apply Syntax Style zur Verfügung. Dadurch werden die Syntaxstil-Probleme je nach aktuellem Kontext in der Auswahl, in der aktuellen Datei oder in mehreren Dateien behoben.
ReSharper C++ stellt zahlreiche vollständige, gängige Refaktorierungen wie Umbenennen, Methode extrahieren und Signatur ändern zur Verfügung. Zusätzlich dazu bietet das Produkt Dutzende Kontextaktionen – lokale Codetransformationen, die mit einer einfachen Tastenkombination aufgerufen werden.
Das manuelle Ändern des Namens einer Klasse oder eines Makros kann diverse Probleme verursachen. Aus diesem Grund kümmert sich ReSharper C++ um alle erforderlichen Überprüfungen, wenn Sie die Refaktorierung Rename aktivieren.
Die Erweiterung führt entweder alle Änderungen automatisch aus oder zeigt Ihnen eine Liste mit Konflikten, die Sie manuell beheben können, um sicherzustellen, dass nur die nötigen und angemessenen Änderungen vorgenommen werden.
Die Refaktorierung Rename kann neben den von Ihnen eingegebenen Codesymbolen auch
relevante Dateien (sowohl Quelldatei als auch Header-Datei) und entsprechenden Text in Kommentaren und der Dokumentation umbenennen
sowie die Verwendungen in #include
-Direktiven aktualisieren.
Mithilfe der Refaktorierung Extract Method können Sie eine neue Methode erstellen, die auf einem ausgewählten Codefragment basiert. ReSharper analysiert den ausgewählten Codeblock und erkennt Variablen, die zu Methodenparametern konvertiert werden können oder den Rückgabewert darstellen.
Mithilfe der Refaktorierung Change Signature können Sie eine oder mehrere Änderungen an der Signatur einer Funktion vornehmen. Alle Verwendungen, Implementierungen und Überschreibungen der Funktion werden entsprechend aktualisiert.
Mithilfe der Refaktorierung Introduce Variable können Sie eine neue lokale Variable auf der Basis eines ausgewählten Ausdrucks erstellen, sie mit dem Ausdruck initialisieren und anschließend alle Vorkommen des Ausdrucks im Code mit Referenzen auf die soeben eingeführte Variable ersetzen.
Umgekehrt ersetzt Inline Variable alle Vorkommen einer bestimmten Variable oder einer lokalen Konstante mit ihrem Initialisierer.
Mithilfe der Refaktorierung Introduce Field können Sie ein neues Feld auf der Basis eines ausgewählten Ausdrucks erstellen, diesem Feld den ursprünglichen Ausdruck in seinem Initialisierer oder im Konstruktor zuweisen und alle Vorkommen ersetzen.
Mithilfe der Refaktorierung Introduce Namespace Alias können Sie Kürzel für tief geschachtelte Namespaces definieren.
Beim Aufruf dieser Refaktorierung wird Ihnen vorgeschlagen, einen Bereich festzulegen, für den Sie einen Namespace-Alias einführen möchten.
Mithilfe der Refaktorierung Introduce typedef können Sie schnell ein typedef
für den ausgewählten
Datentyp erstellen und diesen Datentyp samt allen Vorkommen mit dem neu erstellten „typedef“ ersetzen.
Die Refaktorierung Inline typedef macht das Gegenteil: Sie ersetzt ein vorhandenes typedef
mit dem eigentlichen Datentyp.
Zusätzlich zu den Refaktorierungen bietet ReSharper C++ auch ein Set an Kontextaktionen: lokale Codetransformationen, die dabei helfen, zwischen alternativen Syntaxoptionen zu wechseln. Ähnlich wie Quick-Fixes werden sie mit Alt+Eingabe aufgerufen.
So können Sie z. B. schnell auto
mit einem expliziten Typ oder einen Typ mit
auto
ersetzen. Andere Kontextaktionen helfen dabei, geschachtelte if
-Anweisungen zusammenzuführen,
fehlende case
-Ausdrücke in switch-Anweisungen für einen Enumerator zu generieren, einen Makroaufruf oder
ein typedef
zu ersetzen usw.
ReSharper C++ erweitert die Möglichkeiten von Visual Studio in Bezug auf das Hervorheben von Syntax und das Abgleichen von Strukturelementen im Code, bietet eine eigene Implementierung der Codevervollständigung und ermöglicht die Visualisierung der verfügbaren Dokumentation für alle C++-Symbole.
ReSharper C++ erkennt Dateien im Format *.c, *.cc, *.cxx, *.cpp, *.h und *.hpp in Ihrer Projektmappe und wendet ein Farbschema zum Hervorheben von Quellcode in diesen Dateien an, das Sie jederzeit bearbeiten können.
Zusätzlich dazu hebt ReSharper C++ zusammengehörige Elemente hervor, sobald Sie den Cursor bei
einem Element aus einem Paar platzieren, z. B. Trennzeichen,
Makros oder Formatspezifizierer und Argument im Funktionsaufruf printf
.
Wenn Sie den Cursor beim exit-Punkt einer Funktion, einer Schleife oder einer switch
-Anweisung
(return
,
throw
, break
usw.) platzieren, hebt ReSharper C++ jetzt automatisch alle anderen exit-Punkte der Funktion oder
Schleife hervor.
In C++-Dateien können Sie während der Eingabe von Code die Codevervollständigung verwenden, die unter anderem auch Vorschläge zur Codegenerierung macht.
Die Codevervollständigung schlägt auch Symbole vor, die noch nicht
zur aktuellen Datei gehören. Wenn Sie ein solches Symbol in der Liste mit Vorschlägen auswählen,
wird die entsprechende #include
-Direktive automatisch hinzugefügt.
Das Pop-up mit der Dokumentations-Schnellansicht zeigt die Dokumentation basierend auf Doxygen-Kommentarblöcken an, ohne dass Sie zur Definition eines Symbols navigieren müssen: Drücken Sie einfach Strg+Umschalt+F1 in der Standardbelegung der Tastatur.
Selbst wenn für ein Symbol keine Doxygen-Dokumentation vorhanden ist, zeigt die Dokumentations-Schnellansicht die Symbolsignatur an.
ReSharper C++ kann für C++-Codeelemente außerdem ausführliche Tooltips mit hervorgehobener Syntax anzeigen. Die Tooltips zeigen die Funktions- und Variablentypen sowie die Dokumentation an.
XML-Dokumentationskommentare im C#-Stil werden manchmal auch für C++-Symbole verwendet. ReSharper C++ zeigt sie korrekt im Pop-up der Dokumentations-Schnellansicht und in der QuickInfo an.
C++/CLI ist ein Set aus C++-Spracherweiterungen von Microsoft für einfache Interoperabilität zwischen verwaltetem und systemeigenem Code. ReSharper bietet neben umfangreicher Unterstützung von sowohl verwalteten Sprachen als auch C++ selbstverständlich auch Hilfe beim Schreiben von Code in C++/CLI.
Innerhalb von C++/CLI-Code haben Sie Zugriff auf die gleichen Refaktorierungen und Intention-Aktionen wie in reinem C++-Code. Darüber hinaus besteht die Möglichkeit, zwischen C#- und C++/CLI-Umgebungen zu navigieren.
Dank ReSharper C++ können Sie sich mühelos durch Ihren Code bewegen. Suchen Sie mittels einfacher Tastenkürzel nach Deklarationen, Membern, Methodenaufrufen oder den Membern in einer Vererbungshierarchie.
Für alle Symbole mit separater Deklaration und Definition zeigt ReSharper C++ auf der linken Seite das Symbol Navigate to declaration/definition an (). Klicken Sie das Symbol an oder drücken Sie Strg+B, um schnell zwischen der Deklaration und der dazugehörigen Definition zu wechseln.
Zu anderen kontextabhängigen Navigationsoptionen in in ReSharper C++ gehört die Navigation von einem ausgewählten Symbol zu seinen Verwendungen, zur Basis oder zu abgeleiteten Symbolen.
ReSharper C++ bietet eine Reihe an kontextunabhängigen Navigationsbefehlen, darunter Go to File, Go to Symbol, Go to File Member und Go to Everything.
All diese Befehle unterstützen die Suche auf „lowerCamelCase“-Basis und die Filterung nach Pfad. Wenn Sie z. B.
fc movie
im Pop-up Go to Everything eingeben, erhalten Sie eine Liste mit Dateien
und Dateimembern, die den String
movie im Namen enthalten und die entweder zum Projekt FollowerC oder zum
Namespace FollowerConstants gehören (beide lassen sich fc
zuordnen).
ReSharper C++ gibt Ihnen einen Überblick über die Vererbungshierarchie, zu der ein bestimmter Typ gehört. Sie sehen sowohl die Basistypen als auch die Vererber des ausgewählten Typs und können mit nur einem Klick zu diesen navigieren.
Zusätzlich dazu bietet ReSharper C++ eine Hierarchieansicht, welche die durch die #include
-Direktive
festgelegten Abhängigkeiten visualisiert.
Mithilfe von Find Usages können Sie nach allen Referenzen eines bestimmten Symbols im C++-Code Ihrer Projektmappe suchen.
Nach Abschluss der Suche werden die gefundenen Vorkommen in einem Toolfenster angezeigt und können gruppiert und gefiltert werden. Ein Vorschaubereich ist ebenfalls verfügbar.
Mit ReSharper C++ können Sie die Struktur des aktuellen Dokuments im Fenster File Structure anzeigen, wodurch die Navigation in großen Dateien erheblich vereinfacht wird.
Sobald Sie zu einem anderen Tab des Editors wechseln, zeigt das Toolfenster die Struktur der entsprechenden Datei an.
Im Toolfenster To-do Explorer können Sie Kommentare, die eines der 3 Standardmuster für To-do-Anmerkungen (Bug, Todo und Not Implemented) oder eines Ihrer benutzerdefinierten Muster enthalten, gruppieren und filtern.
Wenn Sie die vollständige ReSharper Ultimate-Lizenz verwenden und eine mehrsprachige Projektmappe haben, sammelt der To-do Explorer alle To-do-Elemente aus den unterstützten Sprachen: C#, VB.NET, C++, JavaScript, XAML, HTML usw.
ReSharper C++ bietet eine Vielzahl an Möglichkeiten zum Generieren von Code aus Standardformulierungen. Zusätzlich zur Deklaration und Definition von Symbolen basierend auf ihren bereits vorhandenen Verwendungen kann die Erweiterung Typmember, umschließende Codeblöcke und sonstige Codeausschnitte erstellen, die Sie häufig in Ihrer Codebasis verwenden.
ReSharper C++ ermöglicht die schnelle Erstellung von fehlenden Membern, überschreibenden Membern, Gleichheitsoperatoren und relationalen Operatoren, Definitionen auf der Basis von vorhandenen Deklarationen, Hash- und swap-Funktionen und Konstruktoren.
Drücken Sie einfach Alt+Einfg im Text-Editor, um das Menü Generate zu öffnen und alle verfügbaren Optionen anzuzeigen.
ReSharper C++ bringt 29 anpassbare Vorlagen mit. Einige sind gewöhnliche Codeausschnitte, andere sind speziell zum Umschließen einer Codeauswahl gedacht.
Darüber hinaus können Sie Dateivorlagen verwenden und erstellen. Drücken Sie Strg+Alt+Einfg, um im aktuellen Projekt schnell eine Klasse hinzuzufügen.
In ReSharper C++ lernt die Codeformatierung von Ihrem bestehenden Code, und Sie können Ihre Einstellungen zu Formatierung und Codestil mit Ihren Teammitgliedern teilen.
Mit ReSharper C++ können Sie Regeln zur Codeformatierung separat für bestimmte Projektmappen konfigurieren und anwenden.
Anstatt alle verfügbaren Optionen zur Codeformatierung zu durchsuchen, können Sie einen Codeblock auswählen und nur solche Optionen konfigurieren, die für diesen Block relevant sind.
Um für einen konsistenten Stil im gesamten Team zu sorgen, können Sie Ihre Format- und Benennungseinstellungen in einer Einstellungsdatei speichern und sie mit Ihren Teammitgliedern teilen.
ReSharper C++ erlaubt Ihnen außerdem, andere Bereiche des Coding-Standards für das Team festzulegen,
z. B. die Reihenfolge von Modifikatoren und den bevorzugten Wert von Zeigerinitialisierern. So können Sie z. B. 0
, nullptr
oder NULL
als bevorzugter Stil des Initialisierers angeben. ReSharper C++ wird bei der Generierung neuer Initialisierer Ihre
Wahl berücksichtigen.
Rufen Sie den Menüpunkt „ReSharper Options | Code Editing | C++ | Naming Style“ auf, um einen der vorgefertigten C++-Benennungsstile zu wählen: STL, Google, LLVM, CamelCase oder Microsoft.
Am einfachsten lassen sich Formatierungseinstellungen anpassen, indem sie aus dem bestehenden Code herausgelesen werden. Rufen Sie den Menüpunkt „ReSharper | Edit | Detect formatting settings“ auf, damit ReSharper die Einstellungen der Codeformatierung erkennt. Ein Toolfenster wird geöffnet, das die erkannte Formatierung enthält und Ihnen ermöglicht, diese zu überprüfen und in den ReSharper-Einstellungen in Ihrem System zu übernehmen. Alternativ können Sie diese in einem Einstellungsbereich mit Teamfreigabe speichern und anderen Entwicklern in Ihrem Team ermöglichen, beim Öffnen der Projektmappe auf dieselbe Konfiguration der Codeformatierung zuzugreifen.
Der Runner für Unit-Tests mit Visual Studio-Integration unterstützt die Frameworks Google Test, Boost.Test, Catch und Doctest.
ReSharper C++ enthält einen Runner für Unit-Tests mit Visual Studio-Integration, der die Frameworks Google Test, Boost.Test, Catch und Doctest unterstützt.
Der Runner erlaubt Ihnen, direkt aus dem Text-Editor über das Kontextmenü Alt+Eingabe Unit-Tests auszuführen und zu debuggen sowie Tests zu verschiedenen Sitzungen hinzuzufügen.
Mithilfe der ReSharper C++-Toolfenster Unit Test Explorer und Unit Test Sessions können Sie Unit-Tests anzeigen, gruppieren, filtern und ausführen sowie Unit-Test-Sitzungen erstellen und verwalten.
Wenn Sie Spiele auf Basis der Unreal Engine entwickeln, profitieren Sie von der spezifischen Unreal-Engine-Unterstützung in ReSharper C++.
ReSharper C++ berücksichtigt die UE-Namenskonventionen bei allen Aktionen – zum Beispiel bei den Refactorings zum Einführen und Umbenennen von Variablen, bei der Generierung von Getter- und Setter-Methoden usw. Die Erweiterung analysiert außerdem die Benennungen, die Sie in Ihrer Codebasis verwenden. Mit den Inspektionen Inconsistent UE naming können Abweichungen von den UE-Namenskonvention hervorgehoben werden.
Für UE-basierten Code sind auch einige Codeanalyse-Prüfungen verfügbar, vor allem für fehlende oder falsch eingestellte UE-Reflection-Makros:
ReSharper C++ bietet eine nahtlose Integration mit UnrealHeaderTool, damit Sie mehr Probleme mit den Metadaten der Unreal-Engine-Klasse direkt im Editor abfangen können. Wenn Sie mit einem Unreal-Engine-Projekt arbeiten, führt ReSharper C++ automatisch UnrealHeaderTool auf der Datei aus, die Sie bearbeiten, und zeigt alle Fehler oder Warnungen an, genau wie bei anderen Inspektionen. Schauen Sie sich die Integration von UnrealHeaderTool in Aktion an.
Um Ihnen die Verwendung der Reflexionsmakros der Unreal Engine zu erleichtern, bietet ReSharper C++ Vervollständigung für Reflexionsspezifizierer innerhalb von Reflexionsmakros.
Wenn sich die Einfügemarke auf einem UE-Reflection-Bezeichner befindet, wird im Kurzdokumentations-Popup (Strg+Q) die integrierte Dokumentation für diese Bezeichner angezeigt.
ReSharper C++ identifiziert RPCs anhand der Schlüsselwörter Client
, Server
oder NetMulticast
in der Deklarationsanweisung UFUNCTION
. ReSharper C++ weiß bei solchen Funktionen, dass die Funktion _Implementation
generiert werden muss; dasselbe gilt für die Funktion _Validate
, wenn WithValidation
angegeben wurde. Die Erweiterung kann beide oder nur eines generieren, je nach dem, welche fehlen.
Wenn Sie zu einer Definition navigieren, werden beide Funktionen (_Validate
und _Implementation
) vorgeschlagen. Alternativ stehen diese Optionen auch im Menü Alt+Enter unter „Related UE functions“ zur Verfügung.
Wenn Sie ein Symbol verwenden, das im aktuellen Bereich nicht verfügbar ist, hebt ReSharper C++ dieses in roter Schrift hervor und schlägt vor, das fehlende #include
hinzuzufügen, falls möglich. Wenn #include
in einer Header-Datei fehlt, wird die Direktive vor .generated.h
eingefügt (diese Datei sollte die letzte auf der include-Liste sein). Fehlerhaft platzierte #include
-Direktiven werden durch die entsprechende Inspektion hervorgehoben.
Die Rename-Refaktorierung in Unreal-Engine-Projekten aktualisiert auch die entsprechende *.generated.h
-Include-Direktive sowie die zugehörigen Dateien mit den Präfixen A
, F
, E
, T
, S
und U
.
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 entsprechend bezeichnete Live-Templates nutzen, um USTRUCT/UCLASS/UENUM/UENUMCLASS
zu generieren.
Die USF-Dateien von Unreal Engine basieren auf HLSL und enthalten den plattformübergreifenden Shader-Code. ReSharper C++ versteht jetzt die in diesen Dateien oft verwendeten virtuellen Dateipfade und unterstützt alle üblichen Aktionen.
Das SpatialOS Game Development Kit ist ein Unreal-Engine-4-Fork, mit dem Online-Spiele in der Cloud ausgeführt und verwaltet werden können. ReSharper C++ erkennt CrossServer, SpatialType, NonSpatialType und andere SpatialOS-Bezeichner. Weitere Informationen
ReSharper C++ bietet eine Erstunterstützung für HLSL (High-Level Shading Language). ReSharper C++ hebt HLSL-Code gemäß Ihrem Standardfarbschema hervor und zeigt für die Codeelemente Inlay-Hinweise und Tooltips mit Typinformationen und Dokumentation an. Sie haben außerdem die Möglichkeit, in Ihrer gesamten Lösung, in referenzierten Dateien und in Standardbibliotheken nach Structs, Funktionen oder Parametern zu suchen und im Handumdrehen zu ihnen zu springen. Und um die HLSL-Erfahrung abzurunden, bietet ReSharper C++ intelligente Code-Completion, automatisches Einfügen paarweiser Zeichen und noch einiges mehr.
Die volle Leistung der Kontrollflussanalyse von ReSharper kommt in HLSL-Shader-Dateien zum Tragen, einschließlich Warnungen über nicht erreichbaren Code, nicht initialisierte Variablen, redundante Kontrollfluss-Sprünge und bedingte Branches und vieles mehr.
Kostenlose 30-Tage-Testversion verfügbar