ReSharper C++ 2024.3의 새로운 기능

ReSharper C++ 2024.3은 대규모 솔루션의 성능을 개선하고, 새로운 C++23 및 C23 기능을 구현하며, Move to Folder(폴더로 이동) 리팩터링을 새롭게 제공합니다. Unreal Engine 프로젝트에서 ReSharper C++는 이제 게임플레이 태그에 대한 코드 완성과 매크로 인수 로깅을 제공하며, 위임에 대한 지원도 향상되었습니다.

다운로드

30일 무료 평가 이용 가능

성능 개선 사항

ReSharper C++ 2024.3에서는 대규모 솔루션의 메모리 사용을 최적화하는 데 중점을 두었으며, 그 결과 메모리 사용량이 크게 줄었습니다. 자체 테스트에 따르면, 초기 색인화 이후 메모리 사용량은 이제 Unreal Engine의 경우 약 20%, Chromium의 경우 30% 낮아졌습니다.

이러한 메모리 절약과 더불어 메모리 트래픽을 줄이는 최적화의 결과로 색인화 속도도 높아졌습니다. 예를 들어, LLVM 솔루션의 초기 색인화 속도가 이제 최대 10% 더 빨라졌습니다.

언어 기능

ReSharper C++ 2024.3에서는 람다 식의 size_t 및 속성에 대한 리터럴 접미사를 구현하여 이제 주요 C++23 기능을 완벽하게 지원합니다. 또한, 이제 C++17 std::has_unique_object_representations 타입 특성이 평가됩니다.

C 언어 사용자를 위해 ReSharper C++에는 typeoftypeof_unqual 키워드, 그리고 C23의 __has_c_attribute 매크로에 대한 지원이 추가되었습니다.

MSVC가 아닌 컴파일러와의 호환성을 높이기 위해 ReSharper C++에는 switch case 범위, 이름 지정된 가변 매크로 매개변수, transparent_union 타입 특성, __attribute((aligned(...)))를 포함한 여러 GNU 언어 확장이 구현되었습니다. ReSharper C++는 추가적인 타입 특성과 부동 소수점 비교를 포함한 여러 가지 새로운 컴파일러 내장 기능도 인식합니다.

Unreal Engine

이제 코드 완성 기능이 UE_LOGUE_LOGFMT 매크로의 인수에서 사용할 수 있는 카테고리 이름과 상세 수준을 제안합니다. 동일한 이름의 기본 제공 라이브 템플릿을 사용하면 새로운 로그 구문을 빠르게 추가할 수 있습니다.

ReSharper C++는 이제 프로젝트에 정의된 게임플레이 태그를 찾아 FGameplayTag::RequestGameplayTag 함수의 인수를 완성할 때 해당 태그를 제안합니다.

UDELEGATE 매크로 지원이 확대되어, 매크로 속성 내부의 리플렉션 지정자에 코드 완성이 제공되고, 위임 타입의 클래스 멤버에 대한 Blueprint의 사용 횟수가 추적됩니다.

Unreal Engine 개발을 위한 독립 실행형 크로스 플랫폼 IDE에 관심이 있다면 Rider를 사용해 보세요. Rider와 ReSharper C++의 Unreal Engine 지원이 일치하도록 조정되어 Rider 2024.3 업데이트에서도 동일한 개선 사항을 기대할 수 있습니다.

폴더로 이동 리팩터링

이제 Move to Folder(폴더로 이동) 리팩터링을 사용하여 C++ 파일을 쉽게 이동할 수 있습니다. 선택한 파일을 새 위치로 이동하면 이 리팩터링이 #include 지시문을 업데이트하여 프로젝트 구조의 변경을 반영합니다.

코딩 지원

C++20 range 라이브러리 사용자를 위해 파이프와 호출 양식 간에 range 어댑터 사용을 변환할 수 있는 새로운 컨텍스트 액션을 도입했습니다. 파이프 양식으로 range 어댑터를 사용할 때 발생하는 오버로드 오류에 대한 진단 메시지도 개선되었습니다.

ReSharper C++ 2024.3에서는 여러 줄로 된 TODO 주석을 지원하여 연이은 줄에서 들여쓰기된 텍스트를 동일한 TODO 항목으로 처리할 수 있습니다. 또한, 외부 이슈에 연결되는 To-do 항목이 있을 때, Peek To-do link(To-do 링크 피킹) 액션(Ctrl+Shift+클릭)을 사용하여 해당 이슈를 인라인으로 표시할 수 있습니다.

Space before parentheses in control statements(제어문의 괄호 앞에 공백 추가)라는 서식 지정 도구 옵션이 활성화되어 있으면, 입력 지원 기능이 작동하여 여는 괄호 앞에 공백을 자동으로 삽입합니다.

새로운 서식 지정 도구 설정을 사용하면 C++/CLI 프로퍼티의 괄호 스타일과 함수 try 블록 앞의 줄 바꿈을 구성할 수 있습니다.

코드 생성

프로젝트에서 Doxygen 대신 문서 주석에 XML 구문을 사용하는 경우, 이제 Code Generation(코드 생성) 설정에서 디폴트 문서 템플릿의 스타일을 쉽게 사용자 지정할 수 있습니다. ReSharper C++는 이제 /** ... */ 주석 내의 XML 문서도 인식하여 툴팁에 올바르게 표시합니다.

또 다른 새로운 설정을 사용하면, 재정의 함수를 생성할 때 코드 생성 액션에서 디폴트 함수 인수를 보존해야 하는지 여부를 제어할 수 있습니다.

Clang 도구 통합

ReSharper C++ 2024.3에는 Clang 19의 clang-tidy 및 clang-format 바이너리가 포함되어 있으며, 최신 LLVM 릴리스의 새로운 검사와 개선 사항이 제공됩니다.

코드에서 특정 clang-tidy 검사를 비활성화하는 // NOLINT(...) 주석에 의해 이제 해당 ReSharper 검사도 비활성화됩니다.

내장된 서식 지정 도구가 이제 // clang-format off// clang-format on 주석을 인식하고 구분 기호로 구분된 영역의 서식 지정을 해제합니다.

이번 릴리스에 도입된 다른 모든 변경 사항을 알아보려면 ReSharper의 새로운 기능 페이지를 살펴보세요.

다운로드

30일 무료 평가 이용 가능