ReSharper 2022.3의 새로운 기능

ReSharper 2022.3에는 UTF-8 리터럴, file 로컬 타입, 정적 가상 멤버, span에 대한 패턴 일치 등 최신 C# 11 기능에 대한 기본 지원이 도입됩니다. 이번 릴리스에서는 코드 강조 표시를 재정비하고, NuGet 패키지에 대한 취약한 종속성 탐지 기능을 도입했으며, GraphML 형식으로 타입과 프로젝트 종속성 다이어그램을 가져오고 내보내는 기능을 적용했습니다. 이 버전에는 ARM64에서 실행되는 Microsoft Visual Studio에 대한 조기 지원도 함께 제공됩니다.

다운로드

30일 무료 평가 이용 가능

C# 11

최신 C# 11 기능에 대한 기본 지원을 마무리하고 있습니다.

UTF-8 리터럴

UTF-8 리터럴에 대한 기본 지원을 추가했습니다. 이제 코드 분석에서 System.Text.Encoding.UTF8.GetBytes() 메서드 또는 적절한 UTF8 심볼이 있는 바이트 배열 대신 리터럴에 u8 접미사를 사용할 것을 제안합니다. UTF-8 리터럴에 대한 일련의 컴파일러 경고 및 오류도 제공됩니다.

file 로컬 타입

file 로컬 타입에 대한 기본 지원에는 새 구문에 대한 이해, 타입에 대한 file 접근성 제어자, 컴파일러 경고와 오류 및 그와 함께 제공되는 빠른 수정(예: 중첩된 클래스에 대해 file 제어자가 지정되었을 때 Move class to outer scope(외부 범위로 클래스 이동) 제공)이 포함됩니다. 일반 타입을 file 타입으로 변환하는 유용한 컨텍스트 액션도 있습니다.

raw 문자열

ReSharper는 이제 일반 문자열과 축자 문자열을 그에 해당하는 원시 문자열로 변환할 수 있습니다. 이는 또한 문자열에 적용되는 기존의 수많은 기능을 이제 원시 문자열에 사용할 수 있음을 의미합니다.

목록 패턴 제안

이 릴리스에서는 컬렉션의 해당 항목을 확인하기 위해 새로운 C# 11 목록 패턴 구문(후속 인덱서 액세스 표현식으로 기존 컬렉션 길이를 확인하는 대신)의 사용을 제안하는 기능을 도입했습니다.

static virtual 멤버

C# 11부터 인터페이스의 static 멤버에 대해 abstractvirtual 제어자를 사용할 수 있으며, 일반 코드에서 이 인터페이스로 타입 매개변수를 제한하여 이러한 멤버를 사용할 수 있습니다. 일반 다형성 멤버를 처리하는 방식과 동일하게 다형성 static 멤버를 처리하도록 ReSharper가 업데이트되었습니다.

  • 여백에 상속 표시.
  • 구현/상위 멤버로 이동.
  • 누락된 구현의 생성.
  • override 키워드 뒤의 코드 완성 제안에는 인터페이스 멤버도 포함되므로 이제 abstract 또는 virtual static 멤버를 쉽게 구현할 수 있습니다.

부호 없는 오른쪽 시프트(>>>) 연산자

ReSharper는 이제 C# 개발자가 부호 있는 데이터 타입에 대해 부호 없는 오른쪽 시프트를 수행할 때 작성해야 하는 번거로운 코드 패턴을 인식하고 대신 C# 11에서 부호 없는 오른쪽 시프트(>>>) 연산자 사용을 제안합니다.

Span에 대한 패턴 일치

문자의 Span을 분석하는 경우, MemoryExtensions.SequenceEqual 메서드를 많이 사용하게 될 것입니다. C# 11에서는 이러한 종류의 검사에 빠른 방법을 도입했습니다. 이제 is 또는 switch 식을 사용하여 문자열 리터럴에 대해 문자의 Span을 간단히 패턴 일치시킬 수 있습니다.

ReSharper는 이제 많은 if 문 대신 is 또는 switch 식을 사용할 것을 제안합니다.

ref 필드 및 scoped 키워드

C#11부터 ref 구조체 내에서 ref 필드를 선언할 수 있습니다. ReSharper는 이 새로운 구문 규칙을 지원하고, 모든 컴파일러 오류와 경고를 제공하며, 코드 완성에 ref 키워드를 표시하고, 이러한 필드가 생성자에서 초기화되도록 허용합니다.

ReSharper는 또한 by-ref 또는 ref struct 인수와 로컬 변수에서 사용할 수 있는 새로운 scoped 키워드를 인식합니다. 지원 내용에는 새 구문의 올바른 구문 분석, 코드 완성의 scoped 키워드, 메서드 재정의 생성 시 scoped 키워드 보존 등이 포함됩니다. 또한 scoped 제어자의 호환성을 확인하고 재정의, 인터페이스 구현 및 대리자 변환에서 일치하지 않는 scoped 매개변수에 빠른 수정을 제공합니다.

C# 11 및 .NET 7에서 각 언어의 ref 안전 규칙이 변경되었습니다. 이러한 변경은 ref 필드의 도입으로 관리형 코드에서 ref 안전성을 제공하기 위해 by-refref struct 변수에 사용할 수 있는 작업에 적용됩니다. ReSharper는 변경 사항을 인식하고 C# 11 또는 .NET 7로 마이그레이션할 때 변경 사항을 수용하기 위해 새로운 scoped 키워드로 어노테이션을 추가하고 업데이트해야 하는 프로젝트 부분을 쉽게 찾을 수 있게 해줍니다.

언어 삽입

2022.3 릴리스에서는 언어 삽입 지원에 대한 몇 가지 변경을 도입합니다.

이제 언어 삽입이 C# 11 원시 문자열 리터럴 내에서 작동합니다.

ReSharper supports the [StringSyntax] attribute from .NET 7, along with its different syntaxes for language injection and code completion.

일반 C# 업데이트

전역 가져오기 여백 표시

C# 및 Razor 파일의 묵시적 네임스페이스 가져오기에 대해 사용자에게 알림을 제공하는 새 여백 표시 아이콘이 있습니다.

해당 줄에서 Alt+Enter를 누르면 묵시적 가져오기의 전체 목록과 해당 global using 지시문이 있는 소스 파일에 관한 정보를 볼 수 있습니다. 가져온 특정 네임스페이스를 선택하면 ReSharper가 .csproj 프로젝트 파일의 <Using Include="Some.NameSpace" /> 태그 탐색을 포함하여 선언된 위치로 이동할 수 있습니다.

ReSharper는 또한 _Imports.razor에서 전역 가져오기를 제공하고 해당 가져오기 정의로 탐색할 수 있게 해줍니다.

서식 문자열 완성

.NET 7에 Int128UInt128 숫자 타입이 추가되면서 코드 완성 서식 지정자 제안이 업데이트되었습니다.

또한 .NET 6의 DateOnlyTimeOnly 날짜/시간 타입에 누락되었던 지원과 함께 .NET 5에 도입된 Half 반정밀도 부동소수점 숫자 타입을 추가했습니다.

표현식에 대한 자명한 패턴

이따금 리팩터링 후 패턴 일치 표현식이 자명한 재귀 패턴으로 바뀔 수 있습니다. 이때 재귀 패턴 구문을 사용하는 것은 전혀 무의미할 수 있으므로 ReSharper는 원래 패턴 일치의 의미를 유지하면서 패턴을 더 간단한 표현식으로 다시 쓰는 액션을 제공합니다.

void 표현식에 대한 코드 완성 힌트

호출 후 입력할 때 의미가 거의 없는 제안을 보게 되는 경우가 가끔 있습니다. 이는 void 반환 메서드가 호출되었을 때 호출의 결과로 값이 생성되지 않는 경우에 발생할 수 있습니다. 일반적으로 이를 실현하려면 몇 가지 IDE 액션이 필요합니다(돌아가서 메서드 선언으로 이동하거나 호출을 마우스로 가리킴). 이번 릴리스에서는 이러한 유형의 void 반환 호출에 대한 void 힌트 항목을 도입하여 호출로 생성된 타입에 대해 즉각적인 피드백을 제공합니다. 이 void 항목을 수락하면 세미콜론이 누락된 경우 호출 후에 세미콜론이 추가됩니다.

코드 강조 표시

ReSharper 2022.3의 코드 강조 표시 및 구불구불한 선이 재정비되었습니다. 내부 로직의 차이로 인해 ReSharper는 Microsoft Roslyn의 코드 스타일 분석기와 충돌하여 강조 표시를 중복 표시하거나, 다른 지점에 동일한 강조 표시를 하거나 , 구불구불한 선을 이중으로 만들었습니다. 이러한 경우 로직 차이가 이제 대부분 해결되었으며 드문 예외적 사례에서 충돌을 해결하는 방법에 대한 명확한 제안과 함께 오류가 발생합니다.

보안

솔루션에서 오픈 소스 NuGet 패키지를 사용할 때마다 프로젝트가 보안 취약성에 노출될 위험이 있습니다. 이러한 위협을 차단하기 위해 NuGet이 제공하는 외부 도구가 있지만 IDE에서 이러한 도구를 직접 사용하여 설계 시 모든 취약성을 포착하는 것이 훨씬 더 편리합니다. ReSharper에 취약한 종속성 탐지 기능을 도입한 이유가 여기에 있습니다. 이 릴리스부터 영향을 받는 모든 종속성이 .csproj.vbproj 파일에서 강조 표시됩니다.

Visual Studio 2022 ARM64 지원

이제 ARM 기반 기기에서 ReSharper를 Microsoft Visual Studio에 통합할 수 있습니다. ReSpeller를 사용한 철자 검사를 제외한 모든 기본 개발 워크플로에 대한 조기 지원을 제공합니다.

설치 프로그램이 업데이트되어 x64 및 ARM64가 모두 지원됩니다. 시스템의 프로세서 아키텍처에 따라 올바른 버전이 자동으로 설치됩니다.

Windows ARM64 지원

dotPeek, dotMemory, dotTrace 및 dotCover와 함께 ReSharper 명령줄 도구도 Windows ARM64를 지원합니다.

디컴파일러

ReSharper 2022.3의 임베디드 디컴파일러는 다음을 지원합니다.

  • 인터페이스의 static abstractstatic virtual 멤버
  • 제네릭 속성
  • 사용자 정의 checked 연산자
  • 부호 없는 오른쪽 시프트 연산자.

IL 뷰어

IL Viewer(IL 뷰어) 도구 창에서 이제 코드를 다양한 수준의 C# 언어 구조로 디컴파일할 수 있습니다. 두 가지 C# 수준을 사용할 수 있습니다. 첫 번째 고급에서는 최신 언어 기능을 사용하여 특정 구문 구조를 단순화하고, 두 번째 저급에서는 이러한 구문 구조를 알고 싶은 경우에 사용할 수 있습니다.

종속성 다이어그램

이제 ReSharper를 사용하면 타입과 프로젝트 종속성 다이어그램을 GraphML 형식으로 저장하고 가져올 수 있으므로 계속해서 다이어그램을 코드 맵으로 사용하고 종속성을 빠르게 탐색할 수 있습니다.

Dynamic Program Analysis

Dynamic Program Analysis(DPA)에는 다음과 같은 데이터베이스 사용과 관련된 다양한 문제를 찾을 수 있는 새로운 검사 기능이 있습니다.

  • 명령어의 긴 실행 시간
  • 너무 많은 데이터베이스 연결
  • 너무 많이 동시 실행되는 데이터베이스 명령어
  • 너무 많은 기록을 반환하는 명령어

이 새로운 검사는 Entity Framework Core 및 SQL Server용 .NET 데이터 제공자를 사용하는 모든 애플리케이션에서 사용할 수 있습니다.

C++20 모듈

ReSharper C++ 2022.3 버전은 C++20 모듈을 실험적으로 지원합니다. 새로운 컴파일 모델과 함께 작동하도록 언어 엔진과 ReSharper C++의 많은 기능을 업데이트하여 명명된 모듈과 헤더 단위를 모두 지원합니다.

ReSharper C++ 2022.3의 새로운 기능

Clang-format 통합

ReSharper C++ 2022.3 버전은 clang-format과 완벽한 통합을 제공합니다. 파일 서식 지정 시 ReSharper의 서식 지정 엔진과 기본 제공 또는 사용자 지정 clang-format 바이너리 간 전환이 가능합니다. ReSharper C++는 별도의 프로세스로 clang-format을 실행하므로 업계 표준 서식 지정 도구와 완전한 호환성, 향상된 성능 및 광범위한 서식 지정 옵션이 보장됩니다.

다운로드

30일 무료 평가 이용 가능