매크로 위로 마우스를 가져가면 툴팁에서 전체 구문 강조 표시 및 적절한 코드 서식 지정과 함께 확장 미리보기를 볼 수 있습니다. 이전과 같이 Substitute macro call(매크로 호출 대체) 컨텍스트 액션을 사용하여 에디터에서 바로 확장이 가능하지만 즉시 미리보기를 이용하면 매크로 작업이 더 쉬워집니다.
또한 Quick Documentation(빠른 문서) 팝업(Ctrl+Shift+F1)에서 대체 미리보기의 엔티티를 클릭하여 해당 문서를 확인할 수 있습니다. 매크로 확장에 알 수 없는 식별자가 포함된 경우 문제를 파악하는 데 도움이 되도록, 마우스를 올리면 나타나는 툴팁과 Quick Documentation 팝업의 대체 미리보기에서 해당 식별자가 강조 표시됩니다.
ReSharper C++ 2022.3에 C++20 모듈에 대한 조기 지원이 도입되었습니다. 이 업데이트에서는 더 많은 코너 케이스를 처리하고 이를 활용하는 실제 프로젝트를 더 잘 지원하기 위해 구현의 완성도를 더했습니다. 또한 모듈화된 코드를 작성하는 데 도움이 되는 ReSharper C++ 기능 목록을 확장했습니다.
Find usages(사용 위치 찾기)를 통해 해당 모듈을 가져온 원래 위치를 모두 찾을 수 있습니다.
Rename(이름 변경) 리팩터링은 모듈 및 모듈 파티션의 이름을 안전하게 변경하여 코드의 모든 관련 선언과 가져오기를 업데이트하는 데 도움을 줍니다.
C++20 모듈 구문에서 코드 완성이 더 효과적으로 지원됩니다. 모듈을 import할 때 알려진 모듈의 이름이 제안되며 완성 목록에는 허용되는 모듈 관련 키워드도 포함됩니다.
또한 C++20 모듈을 지원하기 위해 몇 가지 코딩 지원 기능을 업데이트했습니다. 코드 서식 지정 도구와 Rearrange code(코드 재정렬) 기능이 이제 export 블록과 내보낸 엔티티를 처리합니다. 코드 요소를 재정렬하려면 코드 요소상에 캐럿을 두거나 코드를 선택하여 Ctrl+Shift+Alt를 누른 다음 해당하는 방향키를 누릅니다.
ISO C++ 표준 위원회는 최근 C++23에 대한 기술 작업을 완료했습니다. 주요 컴파일러에서 이미 많은 C++23 기능을 사용할 수 있는 만큼 ReSharper C++ 2023.1에서도 이러한 기능을 사용해 볼 수 있습니다.
Deducing this(this 추론)는 멤버 함수를 지정하는 새로운 방법으로 도입된 주요 C++23 기능입니다. 이제 this 키워드로 객체 매개변수를 명시적으로 만들어 여러 C++ 관용구의 구현을 단순화할 수 있습니다. 예를 들어, 이제 const 및 참조 한정자만 다른 동일한 함수 오버로드를 객체 매개변수의 타입 및 값 카테고리를 추론하는 단 하나의 함수로 바꿀 수 있습니다.
C++23은 auto를 사용하는 더 많은 방법을 제공합니다. auto(x) 및 auto{x}를 사용하면 값에 의해 함수 인수로서 전달된 것처럼 인수의 복사본을 만들 수 있습니다.
ReSharper C++는 기존 언어 구문을 간소화하는 다음 C++23 업데이트도 지원합니다.
()는 이제 많은 경우에 선택 사항입니다.
이제 새로운 내장 파일 템플릿을 사용하여 간단하거나 복잡한 Unreal Engine 테스트를 빠르게 추가할 수 있습니다. Solution Explorer(솔루션 탐색기)로 이동한 다음, 원하는 프로젝트 폴더를 마우스 오른쪽 버튼을 클릭하여 Add(추가) 메뉴를 엽니다(또는 Ctrl+Alt+Insert 사용).
ReSharper C++는 기존 UCLASS, USTRUCT 및 UENUM 템플릿을 보완하는 새로운 UINTERFACE 라이브 템플릿도 제공합니다. Unreal Engine 프로젝트에서 작업할 때 코드 완성 목록에서 해당 항목을 선택하기만 하면 새 인터페이스 클래스를 추가할 수 있습니다.
이제 셰이더 파일에서 #include 지시문을 확인하는 데 사용할 소스 디렉터리 매핑을 지정할 수 있습니다. 게임 또는 엔진 프로젝트에 RiderLink가 설치되어 있으면 Unreal Engine에서 바로 셰이더 매핑을 로드할 수도 있습니다.
새로운 코드 완성 항목을 사용하면 위임, TFunction 또는 TFunctionRef 인수가 필요한 람다 식을 생성할 수 있습니다.
Unreal Engine 개발을 위한 독립실행형 크로스 플랫폼 IDE에 관심이 있다면 Rider를 사용해 보세요. Rider와 ReSharper C++의 Unreal Engine 지원이 일치하도록 조정되어 Rider 2023.1 업데이트에서도 동일한 개선 사항을 기대할 수 있습니다.
ReSharper의 Call tracking(호출 추적)이 마침내 ReSharper C++에 도입되었습니다! 이제 수신 호출의 계층 구조에서 호출 체인을 보고 탐색할 수 있습니다. 함수에 캐럿을 놓고 컨텍스트 메뉴에서 Inspect(검사) | Incoming calls(수신 호출)를 선택하거나 Ctrl+Shift+Alt+A를 누르고 Inspect This(다음을 검사) 메뉴에서 이를 호출합니다.
호출 추적 결과 창에서 계층 구조 항목을 두 번 클릭하여 에디터에서 해당 호출로 이동하거나 노드를 확장하여 수신 호출을 확인할 수 있습니다.
송신 호출 추적은 현재 지원되지 않습니다.
값으로 전달되어 복사하기에 부담이 큰 타입의 함수 매개변수에 플래그를 지정하는 검사를 도입했습니다. 이러한 경우 ReSharper C++는 대신 const 참조로 매개변수를 전달할 것을 제안합니다. 반면에 Create function from usage(사용 위치에서 함수 만들기) 빠른 수정은 이제 값으로 복사하기에 부담이 적은 타입의 매개변수를 우선적으로 전달하려고 합니다.
다음과 같은 새로운 코드 검사는 잠재적인 코드 스멜을 경고합니다.
HRESULT 또는 NTSTATUS 오류 코드를 반환하는 함수의 미사용 반환 값을 표시합니다.
또 다른 검사는 C++17 클래스 템플릿 인수 추론이 템플릿 인수를 추론하지 못하는 경우를 알려주므로 빠른 수정을 사용하여 필요한 인수를 신속하게 수정할 수 있습니다.
ReSharper C++ 2023.1에는 또한 루프 범위 기반 평가 및 개선된 공용체 기능 지원 등, 컴파일 타임 평가 엔진에 대한 많은 개선 사항이 포함되어 있습니다.
이제 전용 Refactor This(다음을 리팩터링) 팝업(Ctrl+Shift+R)과 더불어 Alt+Enter 메뉴에서도 간편하게 대부분의 리팩터링에 액세스할 수 있습니다.
새로운 Create parameter(매개변수 생성) 빠른 수정을 사용하면 Change signature(시그니처 변경) 리팩터링을 편리하고 빠르게 수행할 수 있습니다. 포함하는 함수에 새 매개변수를 추가해야 하는 경우, 빠른 수정을 호출하고 새 매개변수의 타입을 입력하기만 하면 됩니다. 그러면 리팩터링에서 모든 함수 선언과 사용 위치를 업데이트하여 충돌을 알려줍니다.
Extract method(메서드 추출) 및 Change signature(시그니처 변경) 리팩터링 호출이 이제 더 간단해졌습니다.
ReSharper C++는 이제 가변 매크로 정의를 돕기 위해 C++20에 도입된 __VA_OPT__ 매크로를 지원합니다. 이 특수 기능 매크로는 가변 인수 목록이 비어 있지 않을 때 해당 인수로 확장되고 그렇지 않으면 확장되지 않습니다.
기본적으로 파일 경로는 #include 지시문을 정렬할 때 폴더 앞에 놓입니다. 모든 인클루드를 알파벳순으로 나열하려면 이제 새로운 Put files before folders(파일을 폴더 앞에 배치) 옵션을 비활성화할 수 있습니다.
새로운 접미사 템플릿을 사용하면 Unreal Engine 프로젝트에서 std::as_const 또는 AsConst로 const 참조를 빠르게 만들 수 있습니다.
/*로 시작하는 주석이 */로 자동으로 닫히던 동작이 이제 기본적으로 작동하지 않습니다. 닫는 주석의 자동 삽입을 활성화하려면, 새로운 Insert */ after /*(/* 뒤에 */ 삽입) 입력 지원 옵션을 사용할 수 있습니다.
이 릴리스의 다른 변경 사항에 대해 알아보려면 ReSharper의 새로운 기능을 참조하세요. 예를 들어, CSS 지원은 이제 기본적으로 비활성화되어 있습니다.