ReSharper C++ 2024.1의 새로운 기능

ReSharper C++ 2024.1은 C++20 모듈 지원을 개선하고 Call Tracking(호출 추적)에서 송신 호출을 구현합니다. 코딩 지원 개선 사항에는 Change Signature(시그니처 변경) 리팩터링의 개선, 업데이트된 문서 주석 지원 등이 포함됩니다. Unreal Engine 개발자를 위해 ReSharper C++ 2024.1은 C++ 코드에서 Slate UI 프레임워크와 애셋 경로 완성을 지원합니다.

다운로드

30일 무료 평가 이용 가능

C++20 모듈 지원

모듈 검색 프로세스가 업데이트되어 ReSharper C++에서 이제 모듈의 외부 인터페이스에 사용되지 않는 모듈 파티션 단위인 내부 파티션 단위를 지원합니다. 즉, 연관된 export module 선언이 없는 모듈 파티션입니다.

내보낸 C++20 모듈의 내부 표현을 새롭게 개선하여 다른 모듈에서 가져온 엔티티에 대한 이행적 참조가 원활하게 처리되도록 했습니다. 이전에는 이러한 엔티티를 가져온 모듈에서 다시 내보냈습니다. 이번 변경으로 내보낸 모듈의 공간이 크게 줄어들고 C++20 모듈을 활용하는 프로젝트의 성능이 향상될 것으로 기대합니다.

Unreal Engine

ReSharper C++ 2024.1에는 Unreal Engine의 Slate UI 프레임워크에 대한 지원이 도입되었습니다. ReSharper의 코드 서식 지정 도구와 입력 지원 기능을 사용하여 Unreal Engine의 규칙에 따라 Slate 코드 서식을 지정할 수 있습니다. Go to declaration(선언으로 이동), Find Usages(사용 위치 찾기), Rename(이름 변경)과 같은 기능도 Slate의 선언적 구문을 이해할 수 있도록 업데이트되었습니다.

Blueprint 기능과 ReSharper C++ 통합의 연장선으로 UENUM 인스턴스 이름 변경 시 코어 리디렉션 추가 지원과 C++ 코드의 리소스 이름에 대한 애셋 경로 완성이 제공됩니다.

동적 셰이더 연결에 사용되는 HLSL 인터페이스가 이제 셰이더 코드에서 지원됩니다.

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

Call Tracking(호출 추적)의 송신 호출

수신 호출 추적만 지원했던 ReSharper의 Call Tracking(호출 추적)이 이제 송신 C++ 호출 체인의 탐색도 지원합니다. 송신 호출을 탐색하려면 임의의 함수에 캐럿을 놓고 컨텍스트 메뉴에서 Inspect(검사) | Outgoing calls(송신 호출)을 선택하세요. 또는 Ctrl+Shift+Alt+A를 눌러 Inspect This(다음을 검사) 메뉴에서 호출할 수 있습니다.

Change Signature(시그니처 변경) 개선

이제 Change Signature(시그니처 변경)를 사용하여 포인터, 참조 또는 값 타입 간 함수 매개변수의 타입을 쉽게 변경할 수 있습니다. ReSharper는 함수 본문 내의 매개변수 사용 위치를 자동으로 업데이트하고 함수 호출 위치에서 함수 인수를 조정하여 필요한 경우 역참조나 address-of 연산자를 추가합니다.

종속 코드에 잠재적인 사용 위치가 있는 함수에서 Change Signature를 호출하면, 리팩터링을 통해 변경 사항을 확인하고 업데이트해야 하는 사용 위치를 확인할 수 있습니다.

또한, Change Signature를 사용하여 추가된 새 함수 매개변수의 디폴트 인수를 지정할 수도 있습니다.

그 외 Change Signature의 주요 업데이트에는 다음이 포함됩니다.

  • 가변 함수 템플릿 처리가 개선되었습니다.
  • 매크로 호출 내의 호출 위치에 함수 인수를 올바르게 업데이트합니다.
  • Change Signature가 이제 unsigned int 타입의 int 타입 지정자 및 배열 타입을 유지합니다.

문서 주석

이제 라이브 템플릿을 편집할 필요 없이 생성된 문서 주석의 스타일을 사용자 지정할 수 있습니다. 문서 주석의 스타일을 구성하려면 ReSharper의 Settings(설정) | Code editing(코드 편집) | C++ | Code generation(코드 생성)으로 이동하세요.

JetBrains Grazie는 ReSharper 2023.3에 도입된 ReSharper에서 새롭게 기본 제공되는 문법 및 철자 검사기입니다. 2024.1 릴리스에서는 C++ 문서 주석 내에서도 Grazie 기반 문법 검사를 사용할 수 있습니다.

이제 Change Signature(시그니처 변경) 리팩터링이 @param명령어를 함수 매개변수 목록과 동기화된 상태로 유지합니다. 이 리팩터링은 제거된 매개변수에 대한 @param 명령어를 삭제하고, 새 매개변수에 대한 명령어를 추가하며, 포함된 매개변수의 업데이트된 순서와 일치하도록 기존 명령어를 재정렬합니다.

코드 분석

C++ 리팩터링 도구에 대한 광범위한 테스트 도구(Richard Thomson이 유지 관리)의 최신 결과에 따르면, ReSharper C++는 가장 많은 테스트 사례를 통과하여 계속해서 다른 도구보다 뛰어난 성능을 보이고 있습니다. ReSharper의 제안 품질을 개선하기 위한 지속적인 노력의 일환으로, JetBrains는 ReSharper C++ 2024.1에서 Richard의 테스트 도구에서 확인된 몇 가지 문제를 해결했습니다. 예를 들어, 이제 Create constructor from usage(사용 위치에서 생성자 만들기) 빠른 수정 기능이 필요할 때 기본 생성자를 추가합니다.

ReSharper C++ 2024.1에서는 집계 초기화 시 불필요한 관용적 제로 이니셜라이저의 제거를 제안합니다. 몇 가지 새로운 검사에서는 static constexpr 데이터 멤버의 불필요한 inline 지정자와 같이 static 데이터 멤버와 관련된 다양한 문제를 발견합니다.

코드 정리는 불필요한 접근성 지정자를 제거하고 상속자가 없는 클래스를 final로 만드는 새 항목을 추가합니다. Apply ‘auto’ style('auto' 스타일 적용)은 이제 지역 변수 외에도 전역 변수와 클래스 멤버를 처리합니다.

이전에는 특정 범위에서 검사를 억제하려는 경우 ReSharper용으로 // ReSharper disable 주석을 사용할 수 있었습니다. ReSharper C++ 2024.1은 clang-tidy가 사용하는 NOLINT, NOLINTNEXTLINENOLINTBEGIN ... NOLINTEND 주석을 추가로 인식합니다.

코드 서식 지정

ReSharper C++ 2024.1에는 몇 가지 새로운 서식 지정 옵션이 도입되었습니다.

  • Break line after goto labels(goto 라벨 뒤 줄바꿈)Indent goto labels(goto 라벨 들여쓰기)은 라벨이 있는 구문의 서식 지정을 향상합니다.
  • Arrangement of enumerations(열거형 배열)에서 열거형 내부 줄 바꿈을 제어하는 설정.
  • Empty braces formatting(빈 중괄호 서식 지정)Do not change(변경 안 함) 옵션이 포함됩니다.

.clang-format 구성을 사용할 때 ReSharper의 서식 지정 도구는 이제 DisableFormatIndentAccessModifiers 설정을 따릅니다. 이제 GNU 내장 clang-format 스타일도 지원됩니다.

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

다운로드

30일 무료 평가 이용 가능