Visual Studio integrovaného vývojového prostředí (IDE) 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ší verze kódu" označuje libovolnou z těchto kategorií:

  • Kód, který byl dříve povolen kompilátorem jazyka C++ společnosti Microsoft (MSVC), ale nikdy nebyl v souladu se standardem C++.

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

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

    Pokud chcete upgradovat na novější jazykový standard, nastavte možnost Standard jazyka C++ na požadovaný standard a opravte případné chyby kompilace, které se vyvolaly. Obecně doporučujeme nastavit standardní jazyk na nebo /std:c++17/std:c++20 . Chyby vyvolané při upgradu na novější standard se netýkaly chyb, ke které došlo při použití /permissive- možnosti .

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

    Pokud chcete identifikovat kód, ve kterém se doporučují 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 Visual Studio, můžete ho otevřít v Visual Studio 2017 nebo Visual Studio 2019. Visual Studio 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í.

Snímek obrazovky s dialogem Upgradovat projekt

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

Hledání v základu kódu

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

Snímek obrazovky s dialogem Přejít na vše

Pokud chcete zúžit rozsah hledání, zadejte jeden z jedno písmenných filtrů, za ním následuje mezera a pak to, co hledáte.

Seznam chyb

Po nastavení požadovaného standardu jazyka C++ a všech dalších možností kompilátoru (ProjectProperties General ) stiskněte Ctrl+Shift+B a zkompilujte svůj projekt. Můžete očekávat, že se na různých místech v kódu zobrazí některé chyby a upozornění ve formě červených stříek. Chyby se zobrazí také v Seznam chyb. Další informace o konkrétní chybě zobrazíte kliknutím na kód chyby 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, MSBuild chyby, které značí problém s konfigurací projektu.

Snímek obrazovky s kompilátorem a MSBuild chyb v Seznam chyb

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ší.

Zdokumentovat indikátor stavu.

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

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

Při upgradu doporučujeme ve svém projektu spustit analýzu kódu, 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 C++ Core Guidelines. Když je budete dodržovat, výrazně snížíte nebo vyloučíte běžné zdroje chyb a zároveň usnadníte čitelnost a údržbu kódu. Code Analysis výchozím nastavení povolená nativní doporučená pravidla společnosti Microsoft. Další pravidla můžete povolit v části ProjectvlastnostiCode Analysis. Kód, který porušuje jedno z pravidel, je označen jako upozornění a je podtržený zelenou podtržení podtrženou podtržení v editoru kódu. Když najedete myší na podmnožině, zobrazí se popis quickinfo, který popisuje problém.

Snímek obrazovky s popisem analýzy kódu

Kliknutím na ikonu filtru ve sloupci Kód zvolte, která upozornění se mají zobrazit.

Snímek obrazovky s filtry analýzy kódu v Seznam chyb

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

Snímek obrazovky s upozorněními analýzy kódu Seznam chyb

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

Použití rychlých akcí k modernizaci kódu

Editor kódu poskytuje rychlé akce pro některá běžná doporučení. Když se zobrazí ikona žárovky, můžete na něj 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é zobrazuje popis quickinfo, který se zobrazí, když na něj ukazatel myši najede myší:

Snímek obrazovky s rozšířením makra QuickInfo

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

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

  2. Klikněte na ikonudriveru a zvolte Převést makro na constexpr.

    Snímek obrazovky s makrem rychlé akce pro constexpr

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

Snímek obrazovky s funkcí constexpr

A volání metody se teď obarizuje jako volání funkce a Rychlé informace ukazuje odvozovaný AVERAGE typ funkce:

Snímek obrazovky s voláním funkce constexpr

Inicializace proměnných

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

Snímek obrazovky s automaticky otevíra zabezpečením neinicializované proměnné

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

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

Nezpracovaný řetězcový literál.

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