Nástroje ide sady Visual Studio pro upgrade kódu C++

Visual Studio vám pomůže upgradovat starší verzi kódu C++ s možnostmi kompilátoru, upozorněními analýzy kódu a funkcemi editoru, jako jsou rychlé opravy, rychlé informace a vylepšený posuvník. Termín "starší kód" odkazuje na některou z těchto kategorií:

  • Kód, který byl dříve povolen kompilátorem jazyka Microsoft C++ (MSVC), ale nikdy neodpovídá standardu C++.

    Pokud chcete upgradovat starší nevyhovující kód MSVC, zapněte možnost kompilátoru /permissive- . Všechny instance nevyhovujících použití jsou v editoru kódu podtržené červenou vlnovkou. Chybové zprávy v okně Seznam chyb obsahují doporučení, jak chybu opravit. Kliknutím na kód chyby přejděte na stránku nápovědy v dokumentaci. Pokud jsou všechny chyby najednou nepraktické, můžete upgradovat nevyhovující kód ve fázích zapnutím /permissive- možnosti, opravou některých chyb a opětovným vypnutím možnosti. Kód se zkompiluje s novými vylepšeními a můžete se vrátit a opravit zbývající problémy později. Příklady nevyhovujícího kódu MSVC najdete na /permissive- stránce.

  • Kód, který byl povolen ve starší verzi standardu C++, ale byl zastaralý nebo odebrán v novější verzi.

    Pokud chcete upgradovat na novější jazykovou normu, nastavte možnost Standard jazyka C++ na požadovaný standard a opravte případné chyby kompilace, které jsou vyvolány. Obecně doporučujeme nastavit jazykový standard na /std:c++17 nebo /std:c++20. Chyby vyvolané při upgradu na novější standard nesouvisí s chybami vyvolaovými při použití /permissive- této možnosti.

  • Kód, který odpovídá všem verzím standardu, ale v moderním jazyce C++ se už nepovažuje za osvědčený postup.

    Pokud chcete identifikovat kód, ve kterém se doporučuje změny, spusťte analýzu kódu.

Otevření a převod starší verze projektu

Pokud je váš starší projekt založený na starší verzi sady Visual Studio, můžete ho otevřít v sadě Visual Studio 2017 nebo Visual Studio 2019. Visual Studio ho automaticky převede na aktuální schéma projektu s podporou všech nejnovějších funkcí kompilátoru a integrovaného vývojového prostředí (IDE).

Screenshot of the Upgrade a project dialog.

Další informace naleznete v tématu Upgrade projektů C++ ze starších verzí sady Visual Studio.

Prohledání základu kódu

Upgrade základu kódu často zahrnuje vyhledávání prostřednictvím více souborů. Pokud chcete vyhledat cokoli v základu kódu, stiskněte Ctrl+T a zobrazte vyhledávací pole Přejít na vše .

Screenshot of the Go to all dialog.

Pokud chcete zúžit obor hledání, zadejte jeden z 1mísmenných filtrů, následovaný mezerou a pak to, co hledáte.

Seznam chyb

Jakmile nastavíte požadovaný jazyk C++ Standard a všechny další možnosti kompilátoru (Obecné vlastnosti>projektu>), zkompilujte projekt stisknutím kombinace kláves Ctrl+Shift+B. Můžete očekávat, že se zobrazí některé chyby a upozornění ve formě červených vlnovek na různých místech v kódu. Chyby se také zobrazí v seznamu chyb. Další informace o konkrétní chybě potřebujete kliknutím na kód chyby přejít na stránku nápovědy v dokumentaci. Kódy chyb, které začínají na "C", jsou chyby kompilátoru. Kódy, které začínají na MSB, jsou chyby NÁSTROJE MSBuild, které označují problém s konfigurací projektu.

Screenshot showing compiler and MSBuild errors in Error List.

Indikátor stavu dokumentu

Indikátor stavu dokumentu v dolní části editoru zobrazuje počet chyb a upozornění v aktuálním dokumentu a umožňuje přejít přímo z jednoho upozornění nebo chyby na další.

Document health indicator.

V mnoha případech najdete v dokumentaci další informace o konkrétní chybě v historii změn a vylepšeních shody sady Visual Studio.

Modernizace kódu pomocí analýzy kódu

Při upgradu doporučujeme spustit analýzu kódu v projektu tak, aby kód odpovídal minimálně nativním doporučeným pravidlům Microsoftu. Tato pravidla jsou kombinací pravidel definovaných Microsoftem a podmnožinou pravidel C++ Core Guidelines. Díky tomu, že je v souladu s těmito informacemi výrazně snížíte nebo odstraníte běžné zdroje chyb, a zároveň zajistíte, aby byl váš kód čitelnější a lépe udržovatelný. Analýza kódu pomocí nativních doporučených pravidel Microsoftu je ve výchozím nastavení povolená. V části Analýza kódu vlastností>projektu>můžete povolit další pravidla. Kód, který porušuje jedno z pravidel, se označí jako upozornění a podtrží se zeleným vlnovkou v editoru kódu. Když najedete myší na vlnovku, zobrazí se popis rychlého informací , který tento problém popisuje.

Screenshot of a Code analysis tooltip.

Kliknutím na ikonu filtru ve sloupci Kód vyberte, která upozornění se zobrazí.

Screenshot of Code analysis filters in Error List.

Chyby a upozornění analýzy kódu se také zobrazují v seznamu chyb stejně jako chyby kompilátoru.

Screenshot of Code analysis warnings in Error List.

Můžete změnit, která pravidla jsou aktivní, a vytvořit vlastní sady pravidel. Další informace o použití analýzy kódu naleznete v tématu Analýza kódu pro C/C++ přehled.

Modernizace kódu pomocí rychlých akcí

Editor kódu poskytuje rychlé akce pro některá běžná doporučení. Když se zobrazí ikona žárovky, můžete na ni kliknout a zobrazit dostupné rychlé akce.

Převod maker na funkce constexpr

Následující obrázek znázorňuje použití makra s názvem AVERAGE, který má výchozí sémantické zabarvení. Obrázek také ukazuje popis rychlého informací, který se zobrazí, když na něj najede kurzor myši:

Screenshot of a QuickInfo macro expansion.

Vzhledem k tomu, že použití maker se nedoporučuje v moderním jazyce C++, visual Studio usnadňuje převod maker na constexpr funkce:

  1. Klikněte pravým tlačítkem myši a AVERAGE zvolte Přejít k definici.

  2. Klikněte na ikonu šroubováku a zvolte Převést makro na constexpr.

    Screenshot of a Quick Action macro to constexpr.

Makro se převede, jak je znázorněno níže:

Screenshot of a constexpr function.

A volání AVERAGE je teď barevné jako volání funkce a popis rychlé informace zobrazuje vyvolaný typ funkce:

Screenshot of a constexpr function call.

Inicializace proměnných

Neinicializované proměnné můžou obsahovat náhodné hodnoty, které vedou k vážným chybám. Analýza kódu označuje tyto instance a editor poskytuje rychlou akci:

Screenshot of the pop-up for an uninitialized variable.

Převod na nezpracovaný řetězcový literál

Nezpracované řetězcové literály jsou méně náchylné k chybám a jsou pohodlnější než řetězce s vloženými řídicími znaky. Klikněte pravým tlačítkem myši na řetězec a zvolte Rychlé akce a převeďte ho na nezpracovaný řetězcový literál.

Raw string literal.

Řetězec se převede na: R"(C:\Users\bjarnes\demo\output.txt)".