ReSharper 2022.1의 새로운 기능

2022.1은 품질에 중점을 둔 버전으로, 특히 Blazor 개발 및 C# 지원을 위한 많은 개선과 버그 수정을 제공합니다.

다운로드

30일 무료 평가 이용 가능

C# 지원

We continue to improve support for C# 10, particularly global usings. 컨텍스트 액션으로도 사용할 수 있는 두 가지 새로운 리팩터링을 구현했습니다.

Extract Global Using(global using 추출)을 이용하면 프로젝트에서 global using의 개념을 도입할 수 있습니다. 일반 using 지시문에서 이를 호출할 수 있으며, ReSharper는 지정된 GlobalUsings.cs 파일로 이를 추출하도록 제안합니다(이 파일이 프로젝트에 아직 없으면 생성됨). 더 이상 필요하지 않은 일반 using은 프로젝트의 파일에서 제거됩니다.

global using을 일반 using으로 리팩터링하려는 경우 Inline Global Using(gloabl using 인라인화) 리팩터링을 사용하면 도움이 될 수 있습니다. 이 리팩터링은 global using에서 호출 시 GlobalUsings.cs에서 global using을 제거하고 필요한 경우 프로젝트의 파일에 그에 해당하는 using 문을 추가합니다.

global using 기능은 Find Usages(사용 위치 찾기) 및 확장 메서드에 대한 코드 분석에서 지원됩니다.

We’ve looked into the approaching C# 11 and supported generic attributes.

null 가능 참조 타입

  • null이 아니여야 하는 표현식에 대한 null 검사 경고를 두 가지 범주로 나눴습니다. 첫 번째는 NRT(Null 가능 참조 타입) 어노테이션에서 null이 아니여야 한다고 명시되었으므로 null이 될 수 없는 표현식에 대한 경고입니다. 두 번째는 null에 대한 실제 런타임 검사가 있는 표현식에 대한 경고입니다.
  • Runtime enforced not null warnings only(런타임 시 강제되는 비 null 경고만) 모드로 전환하기 위한 새로운 설정을 추가했습니다. 어노테이션 기반 경고에 대한 Alt+Enter 메뉴의 구성 항목 그룹에서 여기에 액세스할 수 있습니다.
  • [MemberNotNull][MemberNotNullWhen] 어노테이션이 이제 null 가능 참조 타입을 사용하지 않는 프로젝트에서 지원됩니다.

엔드포인트

이제 엔드포인트 지원이 ASP.NET Core 6 최소 API 및 규칙 기반 라우팅에 대해 작동합니다. 여기에는 탐색, 코드 분석 및 코드 완성이 포함됩니다.

Razor 및 Blazor

다음은 Razor 및 Blazor에 적용된 가장 주목할 만한 기능 및 수정 사항입니다.

  • .NET 6의 새로운 [EditorRequired] 속성에 대한 지원을 추가했습니다. 필요한 매개변수를 지정하지 않고 Blazor 구성 요소를 사용하는 경우에도 그에 해당하는 검사와 빠른 수정을 사용할 수 있습니다.
  • 오랫동안 기다려온 Razor 구문 내 C# 지역 함수에 대한 지원을 구현했습니다.
  • Blazor 구성 요소가 포함된 .razor 파일에서 코드 정리가 실행되는 방식을 개선했습니다. 이제 코드 정리가 모든 @using 선언을 제거하지 않습니다.
  • 또한 Blazor 구성 요소에 대한 참조가 포함된 Razor 코드에서 If To Switch(if를 switch로 변환)Invert If(if 반전) 컨텍스트 액션을 사용할 때 발생하는 문제를 수정했습니다.
  • ReSharper는 이제 Blazor 삽입 프로퍼티에 올바른 이름 지정 스타일을 사용합니다.
  • 이제 Comment with Line Comment(줄 주석으로 주석 처리) 액션이 필요한 Razor 코드 부분에만 주석을 추가합니다.
  • We’ve added navigation through inheritance hierarchy to Razor code. 이제 기본 및 파생 심볼에 해당하는 여백 마크가 표시됩니다. 마크를 클릭하면 코드로 이동할 수 있습니다.

코드 정리 및 서식 지정

Code Cleanup(코드 정리)Formatting(서식 지정)과 관련된 Alt+Enter 메뉴의 모든 항목을 재구성했습니다. Format selection(선택항목 서식 지정), Cleanup selection(선택항목 정리)Apply syntax style(구문 스타일 적용)이 하나의 Reformat and Cleanup(서식 다시 지정 및 정리) 항목으로 결합되어 하나의 진입점으로 액세스 할 수 있습니다.

이러한 변경 사항 외에도 이제 구문 스타일 설정을 Configure code style(코드 스타일 구성)Autodetect code style settings(코드 스타일 설정 자동 탐지) 액션에서 사용할 수 있습니다. Preview code style(코드 스타일 미리보기) 패널에는 구문 스타일의 변경 결과도 표시됩니다.

Unreal Engine 유닛 테스트

The Unreal Engine testing framework is now supported. ReSharper C++는 Unreal Engine 유닛 테스트를 발견하고, 해당 테스트 또는 전체 테스트를 실행하거나 디버그하도록 에디터의 각 테스트 옆에 그에 해당하는 액션 표시기를 추가합니다. Unit Test Sessions(유닛 테스트 세션) 창에서 테스트 결과를 검토하고 실패한 테스트, 전체 테스트 또는 특정 테스트를 다시 실행할 수 있습니다.

ReSharper C++ 2022.1의 새로운 기능

더욱 향상된 C++ 지원

이제 ReSharper C++가 묵시적 생성자 호출을 더 잘 처리하여, 다음을 포함한 다양한 경우에 사용 위치를 찾고 호출된 생성자로 이동할 수 있습니다.

  • 표준(make_unique/make_shared) 및 Unreal 전용(MakeShared/MakeUnique) 스마트 포인터 생성 함수.
  • emplace 유사 컨테이너 메서드.
  • static_cast 및 C 스타일 형 변환 표현식.

ReSharper C++ 2022.1은 또한 emplace 유사 함수가 잘못된 인수로 호출될 때 오버로드 경고를 표시합니다.

ReSharper C++ 2022.1의 새로운 기능

소스 제너레이터

소스 제너레이터의 지원 성능을 분석한 결과, 컴파일러에서 소스 생성 문서를 가져올 때 요청 사이의 지연을 늘리기로 결정했습니다.

이에 따라 소스 제너레이터는 컴파일러보다 먼저 실행되지 않고 총 CPU 작업량이 줄어듭니다. 정확한 성능 향상은 Visual Studio의 전체 줄 코드 완성과 같은 다른 기능도 제너레이터를 트리거하는지 여부에 따라 다릅니다.

성능

We’ve fixed a number of performance issues already and laid the groundwork for more. 여기에는 고객의 성능 스냅샷 처리, 사내 프로파일링 세션, 향후 성능 저하에 대한 자동 검사가 구현될 경우에 대비한 데이터 수집이 포함됩니다.

"out of process" 모드는 작업 진행 중입니다. Please refer to the newest update in our issue tracker.

ReSharper 명령줄 도구

InspectCode 도구는 Static Analysis Results Interchange Format(정적 분석 결과 교환 형식)(SARIF)과 호환되는 출력 파일을 생성할 수 있습니다.

명령줄 도구가 이제 Alpine Linux를 지원합니다.

디컴파일러

  • 통합된 디컴파일러는 이제 System.Private.CoreLib와 같이 XML 문서 파일의 이름과 이름이 다른 어셈블리를 포함하여 플랫폼 어셈블리에 대한 XML 문서 주석을 표시합니다. XML 문서의 경로가 이제 디컴파일된 파일의 헤더에 표시됩니다.
  • Metadata(메타데이터) 뷰에서 탐색 대상 변경을 해제했습니다.
  • BLOB 노드의 프로퍼티에 디코딩된/원시 BLOB 프레젠테이션을 추가했습니다.
  • Assembly Explorer(어셈블리 탐색기)가 이제 전달된 타입([TypeForwardedTo] 속성)을 지원합니다. Locate in Metadata(메타데이터에서 찾기) 액션은 전달된 유형, 어셈블리 및 모듈 참조, 및 리소스에도 작동합니다.
  • 인터페이스 및 열거형과 같이 시퀀스 포인트가 없는 타입에 대한 PDB 탐색을 개선했습니다.

dotPeek 2022.1의 새로운 기능

SQL Server 이벤트에 대한 지원 개선 dotUltimate

이제 dotTrace는 Windows(.NET Core, .NET 5+)와 macOS 및 Linux(.NET Core 3.0+, .NET 5+)에서 Microsoft.Data.SqlClient 공급자의 SQL Server 이벤트를 지원합니다.

dotTrace 2022.1의 새로운 기능

드래그앤드롭으로 애플리케이션에 연결 dotUltimate

이제 특수 아이콘을 애플리케이션 창으로 끌어다 놓기만 하면 이미 실행 중인 애플리케이션에 프로파일러를 연결할 수 있습니다.

dotMemory 2022.1의 새로운 기능

주석을 사용하여 커버리지 분석에서 코드 제외 dotUltimate

이제 주석을 사용하여 커버리지 분석에서 특정 줄이나 코드 블록을 제외할 수 있습니다. 이를 위해 몇 가지 옵션을 사용할 수 있습니다.

// dotcover disable
var i = 1;
var j = 10;
// dotcover enable

/* dotcover disable */ var i = 1; /* dotcover enable */

var i = 1; // dotCover disable this line

// dotcover disable next line
var j = 100;

이러한 옵션을 작동시키려면 JetBrains.dotCover.MSBuild NuGet 패키지를 참조해야 합니다. 이는 프로젝트에 런타임 종속성으로 포함되지 않는 개발 전용 종속성입니다.

dotCover 2022.1의 새로운 기능

기타 업데이트

  • 컨텍스트 액션 및 빠른 수정도 포함된 Move type to file(타입을 파일로 이동) 리팩터링을 개선했습니다. 이제 일반적인 경우, 전처리기 지시문이 타입과 함께 이동됩니다.
  • '대규모 파일 시스템 변경' 문제를 수정했습니다. 이 문제는 이벤트 버퍼 오버플로에 의해 발생한 것으로 밝혀졌습니다. 이로 인해 ReSharper가 실질적인 이유 없이 솔루션의 모든 파일을 검토하게 되어, CPU 사용량이 높아지고 일부 심각한 경우에는 UI가 정지되었습니다.
  • 현지화된 Visual Studio의 .sqlproj 파일에서 ReSharper의 기능을 방해하는 문제를 수정했습니다.
  • Metadata(메타데이터) 트리 뷰를 ReSharper에 추가했습니다(Visual Studio 2022에만 해당). 이를 통해 어셈블리 메타데이터 내의 모든 항목을 탐색하고 소스 검색 및 탐색 등의 기능을 이용할 수 있습니다. For a full list of the features, please refer to the description in dotPeek documentation – the decompiler was the first product to have it.
  • 'ReSharper가 Git 브랜치 전환 시 빨간색 코드를 표시'하는 것과 관련된 몇 가지 오래된 문제를 해결했습니다. 이 문제가 발생하는 몇 가지 특정 시나리오를 확인하고 수정했습니다.
다운로드

30일 무료 평가 이용 가능