Visual Studio IDE-Tools zum Aktualisieren von C++-Code

Visual Studio unterstützt Sie beim Upgraden von Legacy-C++-Code mit Compileroptionen, Codeanalysewarnungen und Editorfunktionen wie Schnellkorrekturen, QuickInfo und der erweiterten Scrollleiste. Der Begriff "Legacycode" bezieht sich auf eine der folgenden Kategorien:

  • Code, der zuvor vom Microsoft C++-Compiler (MSVC) zugelassen wurde, aber nie dem C++-Standard entsprach.

    Um ältere nicht konforme MSVC Code zu aktualisieren, aktivieren Sie die /permissive- Compileroption. Alle Instanzen nicht konformer Verwendungen werden im Code-Editor mit rotenQuiken unterstrichen. Die Fehlermeldungen im Fenster Fehlerliste enthalten eine Empfehlung zum Beheben des Fehlers. Klicken Sie auf den Fehlercode, um zur Hilfeseite in der Dokumentation zu wechseln. Wenn das gleichzeitige Beheben aller Fehler unpraktisch ist, können Sie nicht konformen Code phasenweise aktualisieren, indem Sie die /permissive- Option aktivieren, einige Fehler beheben und dann die Option erneut deaktivieren. Der Code wird mit den neuen Verbesserungen kompiliert, und Sie können die verbleibenden Probleme zu einem späteren Zeitpunkt beheben. Beispiele /permissive- für nicht konformen MSVC Code finden Sie auf der Seite.

  • Code, der in einer früheren Version des C++-Standards zulässig war, aber in einer späteren Version als veraltet gekennzeichnet oder entfernt wurde.

    Um ein Upgrade auf einen neueren Sprachstandard durchzuführen, legen Sie die Option C++-Sprachstandard auf den gewünschten Standard fest, und beheben Sie alle ausgelösten Kompilierungsfehler. Im Allgemeinen wird empfohlen, den Sprachstandard auf /std:c++17 oder /std:c++20 festzulegen. Die Fehler, die beim Upgrade auf einen neueren Standard ausgelöst werden, beziehen sich nicht auf die Fehler, die bei Verwendung der -Option ausgelöst /permissive- werden.

  • Code, der allen Versionen des Standards entspricht, aber in modernem C++ nicht mehr als bewährte Methode angesehen wird.

    Um Code zu identifizieren, in dem Änderungen empfohlen werden, führen Sie die Codeanalyse aus.

Öffnen und Konvertieren eines Legacyprojekts

Wenn Ihr Legacyprojekt auf einer älteren Version von Visual Studio basiert, können Sie es in Visual Studio 2017 oder Visual Studio 2019 öffnen. Visual Studio konvertiert es automatisch in das aktuelle Projektschema mit Unterstützung für alle aktuellen Compiler- und IDE-Features.

Screenshot of the Upgrade a project dialog.

Weitere Informationen finden Sie unter Aktualisieren von C++-Projekten aus früheren Versionen von Visual Studio.

Durchsuchen der Codebasis

Beim Aktualisieren einer Codebasis müssen häufig mehrere Dateien durchsucht werden. Drücken Sie STRG+T, um das Suchfeld Gehe zu allen zu öffnen, um nach etwas in Ihrer Codebasis zu suchen.

Screenshot of the Go to all dialog.

Um den Suchbereich einzugrenzen, geben Sie einen der 1-Buchstaben-Filter ein, gefolgt von einem Leerzeichen und dann dem Gesuchten.

Fehlerliste

Nachdem Sie den gewünschten C++-Sprachstandard und alle anderen Compileroptionen(ProjectEigenschaften Allgemein) festgelegt haben, drücken Sie STRG+UMSCHALT+B, um das Projekt zu kompilieren. Sie können davon ausgehen, dass einige Fehler und Warnungen in Form von rotenQuiken an verschiedenen Stellen im Code angezeigt werden. Die Fehler werden auch in der Fehlerlisteangezeigt. Um weitere Informationen zu einem bestimmten Fehler zu finden, klicken Sie auf den Fehlercode, um zur Hilfeseite in der Dokumentation zu wechseln. Fehlercodes, die mit einem "C" beginnen, sind Compilerfehler. Codes, die mit "MSB" beginnen, sind MSBuild Fehler, die auf ein Problem mit der Projektkonfiguration hinweisen.

Screenshot showing compiler and MSBuild errors in Error List.

Dokumentintegritätsindikator

Der Dokumentzustandsindikator am unteren Rand des Editors zeigt die Anzahl der Fehler und Warnungen im aktuellen Dokument an und ermöglicht Es Ihnen, direkt von einer Warnung/einem Fehler zum nächsten zu navigieren.

Document health indicator.

In vielen Fällen finden Sie weitere Informationen zu einem bestimmten Fehler in der Dokumentation zum Visual Studio Änderungsverlauf und Verbesserungen der Konformität.

Verwenden der Codeanalyse zum Modernisieren des Codes

Beim Upgrade wird empfohlen, dass Sie die Codeanalyse für Ihr Projekt ausführen, damit der Code mindestens den nativen empfohlenen Microsoft-Regeln entspricht. Bei diesen Regeln handelt es sich um eine Kombination aus von Microsoft definierten Regeln und einer Teilmenge der C++ Core Guidelines. Wenn Sie diesen Entsprechen entsprechen, reduzieren oder beseitigen Sie häufige Fehlerquellen erheblich, und gleichzeitig wird Ihr Code besser lesbar und somit einfacher zu verwalten. Code Analysis die Verwendung der nativen empfohlenen Microsoft-Regeln ist standardmäßig aktiviert. Sie können zusätzliche Regeln unter ProjectEigenschaftenCode Analysisaktivieren. Code, der gegen eine der Regeln verstößt, wird als Warnung gekennzeichnet und im Code-Editor mit einer grünen Geraden unterstrichen. Bewegen Sie den Mauszeiger über die Geraden, um eine QuickInfo-QuickInfo anzuzeigen, die das Problem beschreibt.

Screenshot of a Code analysis tooltip.

Klicken Sie in der Spalte Code auf das Filtersymbol, um auszuwählen, welche Warnungen angezeigt werden.

Screenshot of Code analysis filters in Error List.

Codeanalysefehler und -warnungen werden ebenso wie Compilerfehler in der Fehlerliste angezeigt.

Screenshot of Code analysis warnings in Error List.

Sie können ändern, welche Regeln aktiv sind, und benutzerdefinierte Regelsätze erstellen. Weitere Informationen zur Verwendung von Code Analysis finden Sie unter Codeanalyse für C/C++ – Übersicht.

Verwenden von Schnellen Aktionen zum Modernisieren von Code

Der Code-Editor bietet schnelle Aktionen für einige allgemeine Empfehlungen. Wenn das Glühbirnensymbol angezeigt wird, können Sie darauf klicken, um die verfügbaren Schnellaktionen anzuzeigen.

Konvertieren von Makros in constexpr-Funktionen

Die folgende Abbildung zeigt die Verwendung des Makros mit dem Namen AVERAGE , das über die standardmäßige semantische Farbgebung verfügt. Das Bild zeigt auch die QuickInfo-QuickInfo, die angezeigt wird, wenn der Mauszeiger darauf zeigt:

Screenshot of a QuickInfo macro expansion.

Da von der Verwendung von Makros in modernem C++ abgeraten wird, erleichtert Visual Studio das Konvertieren von Makros in constexpr Funktionen:

  1. Klicken Sie mit der rechten Maustaste auf AVERAGE , und wählen Sie Zu Definition AVERAGEaus.

  2. Klicken Sie auf das Schraubendrehersymbol, und wählen Sie Makro in constexpr konvertieren aus.

    Screenshot of a Quick Action macro to constexpr.

Das Makro wird wie unten dargestellt konvertiert:

Screenshot of a constexpr function.

Und der Aufruf von AVERAGE wird jetzt als Funktionsaufruf farblich farbig dargestellt, und die QuickInfo zeigt den abgeleiteten Typ der Funktion an:

Screenshot of a constexpr function call.

Initialisieren der Variablen

Nicht initialisierte Variablen können zufällige Werte enthalten, die zu schwerwiegenden Fehlern führen. Die Codeanalyse kennzeichnet diese Instanzen, und der Editor stellt eine schnelle Aktion bereit:

Screenshot of the pop-up for an uninitialized variable.

Konvertieren in ein Rohzeichenfolgenliteral

Unformatierte Zeichenfolgenliterale sind weniger fehleranfällig und bequemer als Zeichenfolgen mit eingebetteten Escapezeichen. Klicken Sie mit der rechten Maustaste auf eine Zeichenfolge, und wählen Sie Schnelle Aktionen aus, um sie in ein unformatiertes Zeichenfolgenliteral zu konvertieren.

Raw string literal.

Die Zeichenfolge wird in konvertiert: R"(C:\Users\bjarnes\demo\output.txt)" .