C++ 코드를 업그레이드하기 위한 Visual Studio IDE 도구

Visual Studio를 사용하면 컴파일러 옵션, 코드 분석 경고 및 빠른 수정, 빠른 정보 및 향상된 스크롤 막대와 같은 편집기 기능을 사용하여 레거시 C++ 코드를 업그레이드할 수 있습니다. "레거시 코드"라는 용어는 다음 범주를 참조합니다.

  • 이전에 MSVC(Microsoft C++ 컴파일러)에서 허용되었지만 C++ 표준을 준수하지 않은 코드입니다.

    이전의 비규격 MSVC 코드를 업그레이드하려면 컴파일러 옵션을 켭니다 /permissive- . 비준수 사용의 모든 인스턴스는 코드 편집기에서 빨간색 물결선으로 밑줄이 그어집니다. 오류 목록 창의 오류 메시지에는 오류를 해결하는 방법에 대한 권장 사항이 포함되어 있습니다. 오류 코드를 클릭하여 설명서의 도움말 페이지로 이동합니다. 한 번에 모든 오류를 수정하는 것이 비실용적이면 옵션을 켜고 /permissive- 일부 오류를 수정한 다음 옵션을 다시 해제하여 비규격 코드를 단계별로 업그레이드할 수 있습니다. 코드는 새로운 개선 사항으로 컴파일되며 나중에 다시 돌아가서 다시 기본 문제를 해결할 수 있습니다. /permissive- 비규격 MSVC 코드의 예제는 페이지를 참조하세요.

  • 이전 버전의 C++ 표준에서 허용되었지만 이후 버전에서는 사용되지 않거나 제거된 코드입니다.

    최신 언어 표준으로 업그레이드하려면 C++ 언어 표준 옵션을 원하는 표준으로 설정하고 발생한 컴파일 오류를 수정합니다. 일반적으로 언어 표준을 /std:c++17 설정하거나 /std:c++20으로 설정하는 것이 좋습니다. 최신 표준으로 업그레이드할 때 발생하는 오류는 옵션을 사용할 /permissive- 때 발생하는 오류와 관련이 없습니다.

  • 표준의 모든 버전을 준수하지만 최신 C++에서 더 이상 모범 사례로 간주되지 않는 코드입니다.

    변경이 권장되는 코드를 식별하려면 코드 분석을 실행 합니다.

레거시 프로젝트 열기 및 변환

레거시 프로젝트가 이전 버전의 Visual Studio를 기반으로 하는 경우 Visual Studio 2017 또는 Visual Studio 2019에서 열 수 있습니다. Visual Studio는 모든 최신 컴파일러 및 IDE 기능을 지원하여 현재 프로젝트 스키마로 자동으로 변환합니다.

Screenshot of the Upgrade a project dialog.

자세한 내용은 이전 버전의 Visual Studio에서 C++ 프로젝트 업그레이드를 참조 하세요.

코드 베이스 검색

코드 베이스를 업그레이드하려면 종종 여러 파일을 검색해야 합니다. 코드 베이스에서 항목을 검색하려면 Ctrl+T눌러 모두로 이동 검색 상자를 표시합니다.

Screenshot of the Go to all dialog.

검색 범위를 좁히려면 1자 필터 중 하나를 입력한 다음 공백을 입력한 다음 원하는 항목을 입력합니다.

오류 목록

원하는 C++ 언어 표준 및 다른 컴파일러 옵션(프로젝트>속성>일반)을 설정한 후 Ctrl+Shift+B를 눌러 프로젝트를 컴파일합니다. 코드의 여러 위치에서 빨간색 물결선 형식으로 일부 오류 및 경고가 표시될 수 있습니다. 오류 목록에도 오류가 표시됩니다. 특정 오류에 대한 자세한 내용은 오류 코드를 클릭하여 설명서의 도움말 페이지로 이동합니다. "C"로 시작하는 오류 코드는 컴파일러 오류입니다. "MSB"로 시작하는 코드는 프로젝트 구성에 문제가 있음을 나타내는 MSBuild 오류입니다.

Screenshot showing compiler and MSBuild errors in Error List.

문서 상태 표시기

편집기 아래쪽에 있는 문서 상태 표시기는 현재 문서의 오류 및 경고 수를 표시하며 한 경고/오류에서 다음 경고로 직접 이동할 수 있습니다.

Document health indicator.

대부분의 경우 Visual Studio 변경 기록 및 규칙 향상에 대한 설명서에서 특정 오류에 대한 자세한 정보를 찾을 수 있습니다.

코드 분석을 사용하여 코드 현대화

업그레이드할 때 코드가 최소한 Microsoft 네이티브 권장 규칙을 준수하도록 프로젝트에서 코드 분석을 실행하는 것이 좋습니다. 이러한 규칙은 Microsoft에서 정의한 규칙과 C++ 핵심 지침의 하위 집합의 조합입니다. 이를 준수하면 일반적인 버그 원본을 크게 줄이거나 제거하고 동시에 코드를 더 쉽게 읽을 수 있으므로 기본 쉽게 만들 수 있습니다. Microsoft 네이티브 권장 규칙을 사용하는 코드 분석은 기본적으로 사용하도록 설정됩니다. 프로젝트>속성>코드 분석에서 추가 규칙을 사용하도록 설정할 수 있습니다. 규칙 중 하나를 위반하는 코드는 경고로 플래그가 지정되고 코드 편집기에서 녹색 물결선으로 밑줄이 표시됩니다. 물결선 위로 마우스를 가져가면 문제를 설명하는 QuickInfo 도구 설명이 표시됩니다.

Screenshot of a Code analysis tooltip.

코드 열에서 필터 아이콘을 클릭하여 표시되는 경고를 선택합니다.

Screenshot of Code analysis filters in Error List.

코드 분석 오류 및 경고는 컴파일러 오류와 마찬가지로 오류 목록에도 표시됩니다.

Screenshot of Code analysis warnings in Error List.

활성 상태인 규칙을 변경하고 사용자 지정 규칙 집합을 만들 수 있습니다. 코드 분석 사용에 대한 자세한 내용은 C/C++ 개요에 대한 코드 분석을 참조하세요.

빠른 작업을 사용하여 코드 현대화

코드 편집기에서는 몇 가지 일반적인 권장 사항에 대한 빠른 작업을 제공합니다. 전구 아이콘이 표시되면 이를 클릭하여 사용 가능한 빠른 작업을 확인할 수 있습니다.

매크로를 constexpr 함수로 변환

다음 이미지는 기본 의미 체계 색 지정을 사용하는 매크로를 AVERAGE사용하는 방법을 보여 있습니다. 또한 이 이미지는 마우스 커서를 마우스로 가리킬 때 표시되는 QuickInfo 도구 설명도 보여 줍니다.

Screenshot of a QuickInfo macro expansion.

최신 C++에서는 매크로 사용을 권장하지 않으므로 Visual Studio를 사용하면 매크로를 함수로 쉽게 변환할 수 constexpr 있습니다.

  1. 마우스 오른쪽 단추를 클릭하고 AVERAGE 정의로 이동을 선택합니다.

  2. 드라이버 아이콘을 클릭하고 매크로를 constexpr로 변환을 선택합니다 .

    Screenshot of a Quick Action macro to constexpr.

매크로는 아래와 같이 변환됩니다.

Screenshot of a constexpr function.

이제 호출 AVERAGE 이 함수 호출로 색이 지정되고 빠른 정보 도구 설명에 함수의 추론된 형식이 표시됩니다.

Screenshot of a constexpr function call.

변수 초기화

초기화되지 않은 변수는 심각한 버그를 유발하는 임의의 값을 보유할 수 있습니다. 코드 분석은 이러한 인스턴스에 플래그를 지정하고 편집기는 빠른 작업을 제공합니다.

Screenshot of the pop-up for an uninitialized variable.

원시 문자열 리터럴로 변환

원시 문자열 리터럴은 오류가 발생하기 쉽고 포함된 이스케이프 문자가 있는 문자열보다 형식에 더 편리합니다. 문자열을 마우스 오른쪽 단추로 클릭하고 빠른 작업을 선택하여 원시 문자열 리터럴로 변환합니다.

Raw string literal.

문자열은 다음 R"(C:\Users\bjarnes\demo\output.txt)"으로 변환됩니다.