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

Visual Studio unterstützt Sie beim Upgrade von Legacy-C++-Code mit Compileroptionen, Codeanalysewarnungen und Editorfeatures wie Quick Fixes, Quick Info und der erweiterten Bildlaufleiste. 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 entspricht.

    Um ältere nicht konformen MSVC-Code zu aktualisieren, aktivieren Sie die /permissive- Compileroption. Alle Instanzen nicht konformer Verwendungen werden mit roten Wellenstrichen im Code-Editor 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 alle Fehler gleichzeitig unpraktisch behoben werden, können Sie nicht konformen Code in Phasen 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 zu einem späteren Zeitpunkt zurückkehren und die Probleme neu beheben Standard. Beispiele für nicht konformen MSVC-Code finden Sie auf der /permissive- Seite.

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

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

  • Code, der allen Versionen des Standards entspricht, wird jedoch nicht mehr als bewährte Methode in modernen C++ betrachtet.

    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 neuesten Compiler- und IDE-Features.

Screenshot of the Upgrade a project dialog.

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

Durchsuchen der Codebasis

Das Aktualisieren einer Codebasis umfasst häufig das Durchsuchen mehrerer Dateien. Drücken Sie STRG+T, um nach allen Elementen in der Codebasis zu suchen, um das Suchfeld "Gehe zu".

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 das Gesuchte.

Fehlerliste

Nachdem Sie den gewünschten C++-Sprachstandard und alle anderen Compileroptionen (Project>Properties>General) festgelegt haben, drücken Sie STRG+UMSCHALT+B, um Ihr Projekt zu kompilieren. Sie können erwarten, dass einige Fehler und Warnungen in Form von roten Wellen in verschiedenen Stellen im Code angezeigt werden. Die Fehler werden auch in der Fehlerliste angezeigt. Wenn Sie weitere Informationen zu einem bestimmten Fehler wünschen, 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 Dokumentintegritätsindikator unten im Editor 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 Änderungsverlauf und zur Konformitätsverbesserung von Visual Studio.

Verwenden der Codeanalyse zum Modernisieren des Codes

Beim Upgrade wird empfohlen, codeanalyse für Ihr Projekt auszuführen, damit der Code mindestens den empfohlenen Microsoft Native Rules entspricht. Diese Regeln sind eine Kombination von Regeln, die von Microsoft definiert wurden, und eine Teilmenge der C++-Kernrichtlinien. Durch die Einhaltung dieser Werden Sie häufig auftretende Fehlerquellen erheblich reduzieren oder beseitigen und gleichzeitig ihren Code besser lesbar machen und daher leichter Standard. Die Codeanalyse mit den microsoft nativen empfohlenen Regeln ist standardmäßig aktiviert. Sie können zusätzliche Regeln unter Project>Properties>Code Analysis aktivieren. Code, der gegen eine der Regeln verstößt, wird als Warnung gekennzeichnet und mit einem grünen Wellenstrich im Code-Editor unterstrichen. Zeigen Sie mit der Maus auf die Wellenlinie, um eine QuickInfo-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 auch wie Compilerfehler in der Fehlerliste angezeigt.

Screenshot of Code analysis warnings in Error List.

Sie können ändern, welche Regeln aktiv sind, und benutzerdefinierte Regelets erstellen. Weitere Informationen zur Verwendung der Codeanalyse finden Sie in der Übersicht über die Codeanalyse für C/C++.

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 namens AVERAGE", das die Standardmäßige semantische Farbgebung aufweist. Die Abbildung zeigt auch die QuickInfo-QuickInfo-QuickInfo, die angezeigt wird, wenn der Mauszeiger darauf zeigt:

Screenshot of a QuickInfo macro expansion.

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

  1. Klicken Sie mit der rechten Maustaste daraufAVERAGE, und wählen Sie "Gehe zu Definition" aus.

  2. Klicken Sie auf das Schraubenziehersymbol, 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.

Der Aufruf der AVERAGE Funktion wird nun als Funktionsaufruf farblich dargestellt, und die Quick Info-QuickInfo zeigt den abgeleiteten Typ der Funktion an:

Screenshot of a constexpr function call.

Initialisieren der Variablen

Nicht initialisierte Variablen können Zufallswerte enthalten, die zu schwerwiegenden Fehlern führen. Codeanalyse kennzeichnet diese Instanzen, und der Editor bietet eine schnelle Aktion:

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: R"(C:\Users\bjarnes\demo\output.txt)".