Narzędzia IDE programu Visual Studio do uaktualniania kodu C++

Program Visual Studio ułatwia uaktualnianie starszego kodu C++ za pomocą opcji kompilatora, ostrzeżeń analizy kodu i funkcji edytora, takich jak szybkie poprawki, szybkie informacje i rozszerzony pasek przewijania. Termin "starszy kod" odnosi się do dowolnej z następujących kategorii:

  • Kod, który był wcześniej dozwolony przez kompilator języka Microsoft C++ (MSVC), ale nigdy nie był zgodny ze standardem C++.

    Aby uaktualnić starszy, niezgodny kod MSVC, włącz opcję kompilatora /permissive- . Wszystkie wystąpienia niezgodnego użycia są podkreślone czerwonymi zygzakami w edytorze kodu. Komunikaty o błędach w oknie Lista błędów zawierają zalecenie dotyczące sposobu naprawiania błędu. Kliknij kod błędu, aby przejść do strony pomocy w dokumentacji. Jeśli naprawianie wszystkich błędów jednocześnie jest niepraktyczne, możesz uaktualnić niezgodny kod na etapach, włączając /permissive- opcję, naprawiając niektóre błędy, a następnie wyłączając opcję ponownie. Kod zostanie skompilowany przy użyciu nowych ulepszeń i będzie można wrócić i rozwiązać pozostałe problemy w późniejszym czasie. Zobacz stronę, aby zapoznać się /permissive- z przykładami niezgodnego kodu MSVC.

  • Kod, który był dozwolony we wcześniejszej wersji standardu C++, ale został przestarzały lub usunięty w nowszej wersji.

    Aby uaktualnić do nowszego standardu języka, ustaw opcję C++ Language Standard na żądany standard i napraw wszelkie zgłoszone błędy kompilacji. Ogólnie rzecz biorąc, zalecamy ustawienie standardu języka na /std:c++17 lub /std:c++20. Błędy zgłaszane podczas uaktualniania do nowszego standardu /permissive- nie są związane z błędami zgłoszonymi podczas korzystania z opcji.

  • Kod zgodny ze wszystkimi wersjami standardu, ale nie jest już uważany za najlepsze rozwiązanie we współczesnym języku C++.

    Aby zidentyfikować kod, w którym są zalecane zmiany, uruchom analizę kodu.

Otwieranie i konwertowanie starszego projektu

Jeśli starszy projekt jest oparty na starszej wersji programu Visual Studio, możesz otworzyć go w programie Visual Studio 2017 lub Visual Studio 2019. Program Visual Studio automatycznie konwertuje go na bieżący schemat projektu z obsługą wszystkich najnowszych funkcji kompilatora i środowiska IDE.

Screenshot of the Upgrade a project dialog.

Aby uzyskać więcej informacji, zobacz Uaktualnianie projektów języka C++ z wcześniejszych wersji programu Visual Studio.

Wyszukiwanie bazy kodu

Uaktualnianie bazy kodu często wiąże się z wyszukiwaniem wielu plików. Aby wyszukać dowolne elementy w bazie kodu, naciśnij klawisze Ctrl+T , aby wyświetlić pole wyszukiwania Przejdź do wszystkich .

Screenshot of the Go to all dialog.

Aby zawęzić zakres wyszukiwania, wpisz jeden z filtrów 1-literowych, po którym następuje spacja, a następnie szukana wartość.

Lista błędów

Po ustawieniu żądanego standardu języka C++ i innych opcji kompilatora (Ogólne właściwości>projektu>) naciśnij klawisze Ctrl+Shift+B, aby skompilować projekt. Można oczekiwać, że w różnych miejscach w kodzie pojawią się błędy i ostrzeżenia. Błędy są również wyświetlane na liście błędów. Aby uzyskać więcej informacji na temat określonego błędu, kliknij kod błędu, aby przejść do strony pomocy w dokumentacji. Kody błędów rozpoczynające się od "C" to błędy kompilatora. Kody rozpoczynające się od "MSB" to błędy MSBuild, które wskazują problem z konfiguracją projektu.

Screenshot showing compiler and MSBuild errors in Error List.

Wskaźnik kondycji dokumentu

Wskaźnik kondycji dokumentu w dolnej części edytora pokazuje liczbę błędów i ostrzeżeń w bieżącym dokumencie i umożliwia przechodzenie bezpośrednio z jednego ostrzeżenia/błędu do następnego.

Document health indicator.

W wielu przypadkach więcej informacji na temat określonego błędu można znaleźć w dokumentacji dotyczącej historii zmian i ulepszeń zgodności programu Visual Studio.

Modernizuj kod przy użyciu analizy kodu

Podczas uaktualniania zalecamy uruchomienie analizy kodu w projekcie, aby kod był zgodny z co najmniej natywnymi regułami zalecanymi przez firmę Microsoft. Te reguły są kombinacją reguł zdefiniowanych przez firmę Microsoft i podzbiorem podstawowych wytycznych dotyczących języka C++. Dzięki zgodności z tymi elementami znacznie zmniejszysz lub wyeliminowasz typowe źródła usterek, a jednocześnie zwiększysz czytelność kodu i ułatwisz obsługę. Analiza kodu przy użyciu natywnych reguł zalecanych przez firmę Microsoft jest domyślnie włączona. Możesz włączyć dodatkowe reguły w obszarze Analiza kodu właściwości>projektu.> Kod, który narusza jedną z reguł, jest oflagowany jako ostrzeżenie i jest podkreślony zielonym wywiotkiem w edytorze kodu. Zatrzymaj wskaźnik myszy na przełączniku, aby wyświetlić etykietkę narzędzia QuickInfo opisjącą problem.

Screenshot of a Code analysis tooltip.

Kliknij ikonę filtru w kolumnie Kod , aby wybrać wyświetlane ostrzeżenia.

Screenshot of Code analysis filters in Error List.

Błędy i ostrzeżenia analizy kodu są również wyświetlane na liście błędów, podobnie jak błędy kompilatora.

Screenshot of Code analysis warnings in Error List.

Możesz zmienić, które reguły są aktywne, i utworzyć niestandardowe zestawy reguł. Aby uzyskać więcej informacji na temat korzystania z analizy kodu, zobacz Omówienie analizy kodu dla języka C/C++.

Modernizuj kod za pomocą szybkich akcji

Edytor kodu udostępnia szybkie akcje dla niektórych typowych zaleceń. Po wyświetleniu ikony żarówki możesz ją kliknąć, aby wyświetlić dostępne szybkie akcje.

Konwertowanie makr na funkcje constexpr

Na poniższej ilustracji przedstawiono użycie makra o nazwie AVERAGE, które ma domyślną semantyczną kolorację. Obraz przedstawia również etykietkę narzędzia QuickInfo wyświetlaną po umieszczeniu kursora myszy na nim:

Screenshot of a QuickInfo macro expansion.

Ponieważ korzystanie z makr jest odradzane we współczesnym języku C++, program Visual Studio ułatwia konwertowanie makr na constexpr funkcje:

  1. Kliknij prawym przyciskiem myszy AVERAGE i wybierz polecenie Przejdź do definicji.

  2. Kliknij ikonę śrubokręta, a następnie wybierz pozycję Konwertuj makro na constexpr

    Screenshot of a Quick Action macro to constexpr.

Makro jest konwertowane, jak pokazano poniżej:

Screenshot of a constexpr function.

Wywołanie metody AVERAGE jest teraz kolorowane jako wywołanie funkcji, a etykietka narzędzia Szybkie informacje pokazuje typ wywołania funkcji:

Screenshot of a constexpr function call.

Inicjowanie zmiennych

Niezainicjowane zmienne mogą zawierać losowe wartości, które prowadzą do poważnych usterek. Analiza kodu flaguje te wystąpienia, a edytor udostępnia szybką akcję:

Screenshot of the pop-up for an uninitialized variable.

Konwertowanie na literał nieprzetworzonego ciągu

Nieprzetworzone literały ciągu są mniej podatne na błędy i bardziej wygodne do wpisywania niż ciągi z osadzonymi znakami ucieczki. Kliknij prawym przyciskiem myszy ciąg i wybierz pozycję Szybkie akcje , aby przekonwertować go na nieprzetworzone literał ciągu.

Raw string literal.

Ciąg jest konwertowany na: R"(C:\Users\bjarnes\demo\output.txt)".