ReSharper C++ 2023.3의 새로운 기능

ReSharper C++ 2023.3은 새로운 내장형 문법 및 철자 검사기, 비활성 코드에 대한 코드 완성과 사용 위치 찾기, C, C++, HLSL 지원 업데이트 등을 제공합니다. ReSharper C++ 2023.3 출시 버전은 JetBrains AI Assistant의 주요 업데이트를 통해 향상되었습니다.

다운로드

30일 무료 평가 이용 가능

테스트 단계를 마친 AI Assistant 정식 출시

JetBrains의 AI Assistant가 이제 생산성을 높이기 위한 여러 가지 새롭고 향상된 기능과 함께 정식 출시되었습니다. 최신 개선 사항에는 AI 액션의 향상된 프로젝트 인식과 프롬프트 라이브러리가 포함됩니다.

JetBrains AI Service 구독을 통해 ReSharper C++의 AI Assistant를 추가 기능으로 사용해 보세요.

HLSL 및 Unreal Engine 업데이트

HLSL 2021에는 C++ 유사 템플릿 함수와 데이터 타입이 도입되었습니다. 최신 ReSharper C++ 업데이트는 HLSL 템플릿을 완벽하게 지원합니다.

ReSharper C++ 2023.3은 HLSL 내장 RayQuery 타입에 대한 지원을 도입하고 코드 완성 기능을 개선하여 해당 플래그를 제안합니다.

새로운 검사는 AddDynamic 헬퍼 매크로의 일반적인 함정에 빠지지 않도록 도와줍니다. 이제 동적 위임 함수가 UFUNCTION 매크로로 표시되지 않으면 경고를 받게 됩니다.

아직도 이따금 상용구 코드를 작성하고 있다면 Alt+Insert 단축키를 사용하여 일반 타입 멤버를 자동으로 생성할 수 있다는 점을 잊지 마세요. ReSharper C++ 2023.3에서는 Unreal Engine 규칙을 따르도록 해시 함수 생성을 조정했습니다.

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

C 및 C++ 지원

현재 표준 또는 컴파일러 버전에서 일부 특정 속성을 사용할 수 있는지 확인해야 하는 경우, C++20의 기능 테스트를 통해 해결할 수 있습니다. 전처리기 조건에서 __has_cpp_attribute(operand)를 사용하면 컴파일러가 피연산자에 의해 참조된 속성을 인식하는지 여부를 테스트할 수 있습니다. ReSharper C++는 이제 __has_cpp_attribute를 올바르게 처리하여 C++ 표준 라이브러리에서 속성 어노테이션을 더 효과적으로 지원합니다.

__pragma 키워드와 함께 사용되는 pack pragma에 대한 지원을 도입했습니다. 매크로 정의 내에서 #pragma 지시문을 사용할 수 없기 때문에 __pragma(pack) 구문이 매크로 정의 내에서 사용되는 경우가 있습니다. 이와 같은 경우 ReSharper C++는 이제 코드 분석 결과를 신뢰할 수 있도록 압축된 구조의 크기를 올바르게 계산합니다.

ReSharper C++에 몇 가지 C 기능에 대한 지원이 추가되었습니다.

  • 포인터 선언에 사용할 수 있는 C99 restrict 타입 한정자
  • C23에서 타입 추론 consexprnullptr

또한 ReSharper C++가 크로스 플랫폼 코드에서 더 잘 작동하도록 하기 위해 __is_const(), __is_member_pointer() 등과 같은 몇 가지 새로운 clang 내장 함수에 대한 지원도 도입했습니다.

크로스 플랫폼 C/C++ 개발을 위한 독립 실행형 CLion Nova IDE의 초기 테스트 버전을 시험해 볼 수 있습니다. 이는 ReSharper C++로 구동되며 현 단계에서는 완전 무료로 사용할 수 있습니다. 간단히 등록하고 코딩을 시작한 후 피드백을 보내주세요!

문법 및 철자 검사

JetBrains Grazie가 ReSharper의 새로운 내장 문법 및 철자 검사기로 사용됩니다. Grazie는 20개 이상의 언어를 지원하며 ReSharper가 지원하는 프로그래밍 언어(C#, C++, VB.NET), 마크업 언어(HTML, XML, XAML) 및 주석 내에서 자연어 오류를 찾아냅니다. Grazie에 다른 자연어를 추가하려면 ReSharper에서 Options(옵션) | Grammar and Spelling(문법 및 철자) | General(일반)로 이동하세요.

현재, doxygen 주석에서는 문법 검사를 사용할 수 없습니다.

비활성 코드 작업

플랫폼별 또는 구성별 코드를 사용하면 조건부 전처리기 브랜치 내에서 현재 비활성인 코드 블록을 편집하는 경우가 종종 생깁니다. 이전에는 비활성 코드의 코드 완성에서는 매크로만 제공되었습니다. ReSharper C++ 2023.3에서는 전역 범위의 심볼을 포함하도록 이러한 시나리오의 코드 완성 기능을 개선했습니다.

Find Usages(사용 위치 찾기)는 이제 비활성 코드 및 매크로 본문에서 가능한 사용 위치를 찾습니다. 이전에는 이러한 사용 위치를 찾으려면 Find Usages Advanced(고급 사용 위치 찾기)를 사용하여 텍스트 항목을 조사해야 했습니다. 이제 Find Usages 결과에는 기본적으로 매크로 본문과 비활성 코드의 잠재적 사용 위치가 포함됩니다. 이러한 사용 위치는 활성 코드의 사용 위치와 구별하기 위해 별도의 섹션으로 그룹화됩니다.

코드 분석

ReSharper 전용 C++ 속성을 사용하면 ReSharper가 더욱 정확하고 통찰력 있게 솔루션을 분석할 수 있습니다. ReSharper C++ 2023.3에서는 기존 [[jetbrains::format]], [[jetbrains::guard]][[jetbrains::has_side_effects]] 속성에 대해 [[rscpp::...]] 외에 [[jetbrains::...]] 접두사를 추가했습니다.

새로운 [[jetbrains::pass_by_value]] 속성을 사용하면 함수 매개변수에 대한 Pass value by const reference 검사를 억제할 수 있습니다. 자세히 알아보기

C++20 모듈에서 export 키워드의 잘못된 사용을 찾기 위한 일련의 검사를 도입했습니다. ReSharper C++는 이제 다른 export 선언이 이미 해당 선언을 포함하거나 선언이 모듈 인터페이스 유닛의 일부가 아니어서 내보낼 수 없는 경우 export 제거를 제안합니다. 템플릿 선언을 내보내는 대신 export 선언의 템플릿을 만들려고 하면 export를 이동하라는 제안도 표시됩니다.

번들로 제공되는 clang-tidy 바이너리를 Clang 17로 업그레이드하여 최신 LLVM 릴리스의 업데이트를 적용했습니다.

일부 clang-tidy 검사는 경고 텍스트 외에 더 상세한 내용을 출력합니다. ReSharper C++는 이제 툴팁에 이러한 추가 메모를 표시합니다.

새로운 검사에서는 다중 문자 리터럴의 사용에 대해 경고합니다. 이는 구현 정의 값을 이용해 조건부로 지원되며 이식 가능한 코드에서는 주의하여 사용해야 합니다.

ReSharper C++는 이제 중복된 조건 연산자를 제거하고 삼항 조건식을 단순화하는 빠른 수정을 제안합니다.

코딩 지원

Alt+Insert Generate(생성) 메뉴를 사용하면 상용구 코드를 빠르게 생성할 수 있습니다. ReSharper C++ 2023.3에서는 소멸자를 생성할 수 있는 새로운 액션을 목록에 추가했습니다.

이 액션은 다형적 클래스에서 호출되었을 때 구문 스타일 설정을 사용하여 필요한 virtual 및/또는 override 지정자를 삽입합니다. Code Editing(코드 편집) | C++ | Code Generation(코드 생성) 옵션 페이지에서 생성된 소멸자의 본문 스타일을 구성할 수 있습니다.

#pragma Region#pragma endregion 지시문을 사용하면 접을 수 있는 코드 블록을 지정할 수 있습니다. 다른 일치 지시문과 마찬가지로 이제 #pragma 지시문 또는 리전 이름이 포함된 새로운 인레이 힌트에서 Go to Declaration(선언으로 이동) 액션을 사용하여 2개의 지시문 사이를 이동할 수 있습니다.

또한 이제 File Structure(파일 구조) 창에서 영역을 편리하게 접고 해당 코드 블록으로 이동할 수 있습니다.

C 코드에서는 함수가 인수를 취하지 않음을 나타내기 위해 함수의 매개변수 목록에 void를 사용해야 합니다. ReSharper C++는 이제 사용자가 Extract method(메서드 추출) 또는 Change Signature(시그니처 변경) 리팩터링을 호출할 때 이 특별한 void를 유지하고, 함수에 대한 정의를 생성하거나 사용 위치에서 새 함수를 만듭니다.

이제 참조 인레이 힌트에 별도의 [>>] 텍스트가 있으므로 전달 참조를 한 눈에 확인할 수 있습니다.

새로운 Generate inline definitions(인라인 정의 생성) 액션을 사용하면 여러 함수의 본문을 동시에 빠르게 생성할 수 있습니다. 기존의 Generate definitions(정의 생성)과 유사하게 에디터에서 클래스 이름이나 여러 함수 선언을 선택한 경우 새 액션을 사용할 수 있습니다.

이제 ReSharper C++에서 Introduce variable(변수 삽입) 또는 Introduce field(필드 삽입) 리팩터링을 중첩 표현식상에서 호출할 때 자동으로 가장 바깥쪽 표현식이 사용되지 않고, 사용자가 타깃 표현식을 명시적으로 선택할 수 있습니다.

코드 탐색 환경을 개선하기 위해 이제 매크로 대체에서 나온 심볼이 Go to(이동)File Structure(파일 구조) 창에서 숨겨집니다. 이는 널리 사용되는 유닛 테스트 프레임워크의 테스트 사례 선언과 같이 확장 중에 많은 보조 심볼을 삽입하는 매크로에 유용합니다.

코드 서식 지정

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

  • 후행 반환 타입에서 -> 앞 줄바꿈
  • 후행 반환 타입에서 -> 뒤 줄바꿈
  • 빈 블록 내의 공백
  • { 뒤에 주석 허용

또한 번들로 제공되는 clang-format 바이너리를 Clang 17로 업그레이드하고 .clang-format 구성에서 서식 지정 도구 설정을 가져올 때와 내장 서식 지정 도구 대신 clang-format을 사용할 때 InsertNewlineAtEOF clang-format 설정에 대한 지원을 구현했습니다.

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

다운로드

30일 무료 평가 이용 가능