ReSharper 2023.2의 새로운 기능

ReSharper 2023.2는 C#에 대한 향상된 지원과 함께 지역 함수 및 원시 문자열 작업과 일반적인 Entity Framework 문제 해결을 위한 새로운 검사 기능을 제공합니다. 이 릴리스에서는 또한 C++ 리팩터링과 더 많은 C++20 및 C++23 기능을 지원합니다. ReSharper 2023.2에 처음 선보이는 기능 중에는 유닛 테스트를 쉽게 생성하고 탐색하는 기능, 예측 디버거 모드, 새로운 AI Assistant 등이 있습니다.

다운로드

30일 무료 평가 이용 가능

주요 업데이트

향상된 C# 지원

향상된 C# 지원

ReSharper 2023.2에는 원시 문자열 리터럴 및 지역 함수 작업은 물론 일반적 Entity Framework 문제와 중복 null 가능 지시문을 처리하기 위한 새로운 코드 검사와 빠른 수정이 도입되었습니다. C# 12 조기 지원에는 기본 생성자와 선택적 매개변수를 사용하는 람다 식이 포함됩니다. 또한 폐기 및 무시 가능한 리소스에 대한 ReSharper 지원을 개선하고 새로운 인라인 및 행간 힌트를 추가했습니다.

자세히 알아보기

유닛 테스트 탐색 및 생성

ReSharper의 유닛 테스트가 크게 업데이트되어 프로덕션 코드에 대한 테스트를 탐색하고 생성할 수 있습니다!

테스트를 생성하려면 Generate Code(코드 생성) 액션을 호출하고 Unit Test(유닛 테스트)를 선택하거나 Ctrl+U,C를 누르세요. ReSharper를 사용하면 테스트 클래스 이름을 선택할 수 있으며, 원하는 테스트 프레임워크로 새 프로젝트를 생성할 수도 있습니다(아직 준비되지 않은 경우). 테스트가 생성되면 Navigate To(탐색 위치) 액션을 사용하거나 Ctrl+U,F를 눌러 구현 코드와 테스트 코드 사이를 이동할 수 있습니다.

자세히 알아보기

AI Assistant

AI Assistant 제한적 액세스

IntelliJ 기반 IDE 및 .NET 도구의 2023.2 버전에는 AI Assistant라는 새로운 주요 기능이 포함됩니다. 초기 AI 지원 기능들은 통합 AI 채팅을 제공하고 컨텍스트 작업을 통해 일부 핵심 개발 워크플로에 자연스럽게 연결되어 AI Assistant가 선택한 코드 조각을 설명하고 잠재적인 문제를 제거하며 XML 문서를 자동으로 생성할 수 있게 해줍니다.

자세히 알아보기

C# 지원

원시 문자열 지원 개선

원시 문자열 작업을 위한 새로운 C# 검사와 컨텍스트 액션은 물론, 향상된 입력 지원과 새로운 서식 지정 옵션을 추가했습니다.

  • 여러 줄 축자 문자열을 원시 표현으로 변환하는 Use raw string(원시 문자열 사용) 검사
  • 불필요한 일부 따옴표와 달러 기호를 제거하기 위한 Simplify raw string(원시 문자열 단순화) 검사
  • 따옴표, 보간 중괄호 및 달러 기호를 추가하거나 제거하고 한 줄 표시와 여러 줄 표시 사이를 전환하는 여러 가지 컨텍스트 액션
  • 원시 문자열 내의 내용을 정렬하거나 들여 쓸 수 있는 여러 가지 코드 서식 지정 도구 옵션
  • Enter, Delete 또는 Backspace 키를 누를 때 입력 지원 개선

개선된 원시 문자열 지원에 대해 자세히 알아보려면 해당 블로그 글을 확인하세요.

일반적인 Entity Framework 문제 검사

일반적인 Entity Framework 문제 검사

Entity Framework와 같은 객체 관계형 매핑(ORM) 프레임워크를 사용하여 데이터베이스 작업을 수행할 때 경험할 수 있는 일반적인 문제를 해결할 수 있도록 몇 가지 새로운 검사, 빠른 수정 및 컨텍스트별 탐색 옵션을 추가했습니다.

  • 가능한 'N+1' 문제를 해결하는 데 도움이 되도록 Possible multiple queries to the database for related entities (N+1 problem)(관련 엔티티의 데이터베이스에 대해 실행 가능한 여러 쿼리(N+1 문제))Possible multiple queries to the database (N+1 problem)(데이터베이스에 대해 실행 가능한 여러 쿼리(N +1 문제)) 검사, 해당 빠른 수정 및 'N+1' 문제가 있을 수 있는 코드의 위치를 조사하기 위한 전후 컨텍스트 탐색을 제공합니다.
  • 'N+1' 문제를 탐지하는 검사 외에도 Entity Framework로 작업할 때 Query can return incomplete data for related entities(쿼리가 관련 엔티티에 대해 불완전한 데이터를 반환할 수 있음)라는 유용한 검사를 하나 더 도입했습니다. 또한 이 문제를 조사하는 데 도움이 되는 빠른 수정과 전후 컨텍스트 탐색도 제공됩니다.

이 블로그 글에서 새로운 Entity Framework 관련 검사에 대해 자세히 알아보세요.

지역 함수 작업에 대한 검사

ReSharper 2023.2에는 지역 함수와 관련해 코드 가독성을 개선하기 위한 두 가지 새로운 검사와 그에 해당하는 빠른 수정이 도입되었습니다.

  • 메서드 끝에 있는 지역 함수 앞에 명시적인 return 또는 continue를 배치하라는 권장
  • 지역 함수를 메서드 또는 블록의 끝으로 이동하고 명시적인 return, continue 또는 다른 제어 흐름 이동 구문을 사용하여 실행 코드에서 이를 분리하라는 제안

코드 변경을 원하지 않거나 변경이 허용되지 않는 경우, ReSharper 2023.2는 코드를 변경하지 않고 이해할 수 있도록 지역 함수 앞에 return; 또는 continue; 구문 관련 행간 힌트를 표시합니다.

새로운 검사에 대한 자세한 내용은 이 블로그 글을 확인하세요.

#nullable 지시문 및 NRT 어노테이션 검사

#nullable 지시문 및 NRT 어노테이션 검사

이제 #nullable 지시문 및 NRT 어노테이션에 대한 몇 가지 새로운 검사를 사용할 수 있습니다.

  • Redundant nullable directive(불필요한 null 가능 지시문) 검사
  • Unused nullable directive(사용되지 않는 null 가능 지시문) 검사
  • Null 가능 참조 타입(NRT) 어노테이션이 기본 멤버의 JetBrains.Annotations 속성과 모순되는 경우를 경고하는 검사

이러한 검사에 대해 자세히 알아보려면 이 블로그 글을 확인하세요.

var 선언에서 탐색 개선

var 선언에서 탐색 개선

이제 다른 타입을 래핑하는 데 사용되는 일반 타입을 var에서 탐색할 때, 모든 탐색 액션(Go to(다음으로 이동)…, Find Usages(사용 위치 찾기) 등)에서 기본 타입이 제안됩니다. 예를 들어, ImmutableArray<Person>? 타입이 있는 변수의 var 키워드에서 Go to declaration(선언으로 이동) 액션을 사용할 때 ReSharper는 Person으로의 탐색을 제안합니다.

자세한 내용은 다음 블로그 글에서 알아볼 수 있습니다.

기본 생성자 C# 12 테스트 버전

2023.2 버전에서는 C# 12 테스트 버전의 비 레코드 클래스와 구조체에 대한 기본 생성자 지원을 도입했습니다. 초기화가 새로운 기본 생성자를 사용하여 초기화를 표현할 수 있는 타입을 감지하고 코드 반복을 크게 줄이는 빠른 수정을 제안하는 몇 가지 검사가 추가되었습니다.

타입의 초기화를 간단하게 만들면 안되며, 기본 생성자를 사용해 표현할 수 없는 경우가 있습니다. 이러한 경우를 위해 기본 생성자 매개변수에서 생성자 및 일반 필드로 역교체를 수행하는 몇 가지 컨텍스트 액션을 도입했습니다.

이를 포함하여 그 밖의 다양한 기본 생성자의 기능이 어떻게 작동하는지 확인하려면 별도의 블로그 글을 확인하세요.

람다의 디폴트 매개변수 값 지원

람다의 디폴트 매개변수 값 지원 C# 12 테스트 버전

C# 12 언어 업데이트를 지원하기 위한 작업의 일환으로 람다 식의 디폴트 매개변수 값에 대한 지원을 도입했습니다. 이 구문 인식과 관련된 표준 경고 메시지 세트 외에도, 기존 검사인 The parameter has the same default value(매개변수가 동일한 디폴트 값을 가짐)를 수정하여 람다의 디폴트 매개변수 값을 처리하도록 했습니다. 자세한 내용은 여기에서 확인할 수 있습니다.

폐기 가능한 리소스에 대한 지원 개선

ReSharper 2023.2에는 객체 폐기를 더 효과적으로 제어하도록 설계된 두 가지 새로운 코드 검사가 도입되었습니다.

  • Return of a variable captured by ‘using’ statement('using' 문으로 캡처된 변수 반환) 검사는 반환된 객체가 즉시 폐기될 때 이를 경고합니다.
  • Return of a task produced by ‘using’-captured object('using'으로 캡처된 객체에 의해 생성된 작업의 반환) 검사는 using 문으로 캡처된 객체에 의해 Task가 생성된 후 즉시 반환되는 상황을 확인합니다.

또한 IAsyncDisposable 인터페이스를 지원하고 async 메서드를 생성하여 리소스를 릴리스할 수 있도록 Generate dispose pattern(폐기 패턴 생성) 기능을 개선했습니다.

이러한 추가 기능에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

C#의 무시 항목 지원 개선

코드 분석에 C#의 무시 항목 지원에 대한 새로운 유용한 기능이 추가되었습니다.

  • 이제 Push-to-Hint 기능으로 무시된 값의 이름과 타입을 빠르게 확인할 수 있습니다.
  • 실제로 사용되는 _이라는 변수와 매개변수에 대해 The _ name is typically reserved for local parameters without usages('_' 이름은 일반적으로 사용 위치가 없는 지역 매개변수를 위해 예약됩니다)라는 경고가 표시됩니다. 이러한 변수와 매개변수는 '무시된' 값처럼 보이지만 실제로는 완전히 반대입니다.
  • Use discard assignment(대입 무시 사용) 검사는 미사용 변수와 매개변수를 무시 항목으로 대체하는 데 사용됩니다.

향상된 무시 항목 지원에 대해 자세히 알아보려면 이 블로그 글을 확인하세요.

인레이 힌트

코드 가독성 개선을 위한 새로운 인레이 힌트

튜플 구성 요소 이름이 있는 인레이 힌트

튜플 인수 또는 반환 타입에 값을 전달할 때 C#에서 구성 요소 이름을 건너뛸 수 있습니다. 그러나 이름이 없으면 타깃 타입을 보지 않은 상태에서 각 구성 요소의 의미를 알기가 더 어려워집니다. 예를 들어, 많은 소프트웨어 개발자는 해당 구성 요소의 의미를 이해하기 위해 튜플(null, false)이 대입된 위치를 확인해야 합니다.

이때 인레이 힌트가 유용할 수 있습니다! ReSharper 2023.2는 튜플 구성 요소 이름이 구성 요소 표현식에서 아직 명확하지 않은 경우 튜플 구성 요소 이름이 있는 인레이 힌트를 표시하여 코드를 한 눈에 훨씬 쉽게 읽고 이해할 수 있도록 합니다.

Null 및 디폴트 구성 요소에 대해 ReSharper 2023.2는 타깃 구성 요소에 명시적인 이름이 없더라도 타깃 타입에 대한 힌트를 표시합니다. 문자열과 객체 타입은 일반적으로 그다지 설명적이지 않기 때문에 이 경우는 예외입니다.

이름이 가독성을 향상시킬 수 있는 또 다른 일반적인 경우는 명시적 이름을 Deconstruct 메서드 또는 소스 튜플 구성 요소에서 알 수 있는 구조 분해 패턴입니다. 이러한 힌트는 value is ({ }, true, null)과 같이 일치 항목을 파악하기에 충분한 데이터가 패턴 자체에 없을 때 추가적인 컨텍스트를 제공하려는 목적으로 개발되었습니다.

#pragma warning 지시문에 대한 지원 개선

#pragma warning 지시문에 대한 지원 개선

Pragma 지시문을 사용하면 해당 ID에 의한 컴파일러 경고를 쉽게 비활성화하거나 복원할 수 있습니다. 이러한 ID는 컴파일러와 통신할 수 있는 좋은 방법이지만 사람인 개발자가 이해하기 어려울 수 있습니다. 포괄적인 지식이 없다면 CS0168 또는 CS0618과 같은 ID가 무엇을 의미하는지, 또는 어디에 주의를 기울여야 하는지 명확하지 않을 수 있습니다.

LINQ 장식

LINQ 장식

LINQ 쿼리는 여러 변환과 프로젝션을 포함하는 등 종종 복잡할 수 있습니다. 복잡한 LINQ 쿼리를 디버그하려면 시간이 오래 걸릴 수 있으며, 대량의 데이터 집합을 처리할 때 특히 그렇습니다. 쿼리의 각 단계에서 출력을 쉽게 검사할 수 있도록 ReSharper는 이제 디버그 중에 중간 결과를 인레이 힌트로 표시합니다.

에디터 장식이 중간 결과를 표시하므로 이제 예상치 못한 값이나 잘못된 변환이 발생하는지 계속해서 빠르게 확인할 수 있습니다.

C++ 지원

안전한 삭제

안전한 삭제

소스 코드에서 심볼을 안전하게 제거할 수 있는 Safe Delete(안전한 삭제) 리팩터링이 ReSharper C++ 에 도입되었습니다. 클래스, 함수, 변수, 열거형, 네임스페이스 및 콘셉트에 이 리팩터링을 사용할 수 있습니다.

심볼을 삭제하기 전 ReSharper C++에서 해당 심볼의 사용 위치를 찾아 소스 코드 변경 사항을 미리 보여주므로 실수로 삭제하는 경우를 방지할 수 있습니다. 클래스 또는 네임스페이스와 같은 복잡한 엔티티를 삭제하려는 경우 ReSharper C++가 해당 엔티티의 모든 멤버의 사용 위치를 재귀적으로 확인합니다.

C++20 및 C++23 추가 기능

C++20 및 C++23 추가 기능

이번 릴리스에서는 if consteval, C++23 표준 라이브러리 모듈, [[no_unique_address]] 속성 및 정적 operator()/operator[]를 포함하여 몇 가지 새로운 언어 기능을 지원합니다.

ReSharper C++ 2023.2의 새로운 기능

코드 서식 지정

LINQ 장식

Fluent API 호출의 서식 지정

ReSharper 2023.2에는 연결된 메서드 호출의 가독성을 개선하도록 설계된 몇 가지 새로운 C# 코드 서식 지정 옵션이 도입되었습니다.

첫 번째 코드 서식 지정 옵션은 첫 번째 메서드 호출 앞에 줄 바꿈이 있는지 여부를 제어합니다. 두 번째 옵션은 메서드 호출과 프로퍼티 호출이 혼합된 상황을 위한 것으로, 프로퍼티 호출 뒤에 줄 바꿈을 삽입해야 하는지 여부를 결정합니다.

AI Assistant 제한적 액세스

AI Assistant는 ReSharper와 함께 제공되지 않으며 별도로 설치해야 합니다. 현재 AI Assistant 기능은 대기자 명단을 통해 이용할 수 있습니다.

JetBrains 웹 도움말에서 AI Assistant에 대한 자세한 정보와 Toolbox App 또는 dotUltimate 설치 프로그램을 통해 AI Assistant를 설치하는 방법을 알아보세요.

AI Assistant의 채팅 기능

AI Assistant의 채팅 기능

기본적으로, ReSharper 내에서 AI Assistant는 솔루션에 사용된 프로그래밍 언어, 프레임워크, 라이브러리 및 기술 등 개발 환경을 인식합니다. 이러한 인식을 통해 AI는 쿼리에 보다 정확하고 구체적인 답변을 생성할 수 있습니다.

Smart chat(스마트 채팅) 옵션을 사용하면 AI Assistant가 특정 파일과 심볼을 참조하고, 코드 조각이나 최신 변경 사항을 검색하며, 특정 메서드의 사용 위치를 찾을 수 있어, 결과적으로 훨씬 더 정확한 제안을 내놓을 수 있습니다.

컨텍스트 액션

컨텍스트 액션

AI Assistant 플러그인이 설치되어 있으면 ReSharper의 컨텍스트 액션에서 다양한 AI 지원 옵션이 제공됩니다. AI Assistant는 다음과 같은 도움을 제공합니다.

  • 선택한 코드 설명
  • 잠재적인 문제 확인
  • 구현되지 않은 메서드에 대한 코드 작성
  • XML 문서 생성

예측 디버거 베타 Visual Studio 2022

ReSharper 2023.2에 도입된 예측 디버거 모드는 프로그램을 실제로 실행할 필요 없이 프로그램 실행으로 인해 발생할 수 있는 모든 상태를 예측하므로 다음과 같은 이점을 제공할 수 있습니다.

  • 변수의 필요 값을 표시합니다.
  • 실행되지 않을 프로그램 부분을 시각적으로 '소거'합니다.
  • 실행을 계속했을 때 예외가 발생하는 경우 경고를 제공합니다.

예측 디버거는 프로그램 실행에 대한 새로운 차원의 인사이트를 제공합니다. 또한 코드를 변경할 때마다 디버그 프로세스를 다시 시작할 필요 없이 다양한 값을 시도해보고 코드 문제를 해결할 수 있습니다.

ReSharper | Options(옵션) | Tools(도구) | Debugger(디버거) | Editor Integration(에디터 통합) | Predictive debugger(예측형 디버거) | Show predicted values (beta)(예측 값 표시(베타))로 이동하여 예측 디버거를 사용할 수 있습니다.

자세히 알아보기

이 디버거는 현재 베타 단계이므로 완전한 잠재력을 실현하려면 여러분의 피드백이 꼭 필요합니다. 사용하면서 버그가 발견되면 이슈 트래커에 보고하고 다른 제안이나 요청 사항이 있을 시 언제든지 알려주세요.

디컴파일러

어셈블리 Diff

ReSharper 2023.2에서는 두 어셈블리를 자세히 비교할 수 있습니다. 이 기능은 특정 어셈블리의 두 버전 간의 차이점을 면밀히 조사하고 최신 버전에 도입되었을 수 있는 잠재적 취약성을 찾아낼 때 특히 유용합니다.

어셈블리를 비교하려면 Assembly Explorer(어셈블리 탐색기) 도구 창에서 Compare Two Assemblies(두 어셈블리 비교)를 클릭합니다. 단일 파일 애플리케이션과 .exe 또는 .dll 파일 모두 비교 대상으로 선택할 수 있습니다.

이 기능에 대해 자세히 알아보려면 여기를 클릭하세요.

성능

ReSharper 2023.2에서는 시스템 작동을 위해 IDE에 필요한 데이터의 캐싱 방식을 수정했습니다. 수많은 성능 테스트를 거쳐 완성된 이번 수정으로, 솔루션을 열 때마다 소비되는 디스크 공간이 눈에 띄게 줄었습니다. 즉, 디스크 입출력에 소요되는 시간이 전반적으로 줄어들고 솔루션 로드 시간이 빨라지는 것을 체감할 수 있을 것입니다.

솔루션 로딩 속도를 높여주는 또 다른 변경 사항은 ReSharper 내부 구성 요소 구성 로직의 리팩터링입니다. 자세히 알아보려면 여기를 클릭하세요.

기타

Dynamic Program Analysis

  • 이전에는 DPA가 일시 중지된 디버그 시간을 코드 실행 시간으로 잘못 계산하여 거짓 양성 데이터베이스 문제가 발생하는 경우가 있었습니다. 이 문제는 버전 2023.2에서 수정되었습니다.
  • DPA는 이전에 해당 호출 스택에 람다 함수에 의한 메모리 할당이 포함된 경우 큰 코드 블록을 강조 표시할 수 있었습니다. 이제 강조 표시가 더 세분화되었습니다.
다운로드

30일 무료 평가 이용 가능