ReSharper 2021.2의 새로운 기능

ReSharper 2021.2 버전은 C# 코드 분석 및 nullable 참조 타입 지원을 위한 빠른 수정이 포함된 새로운 검사를 제공하며, 수동으로 작성된 코드 파일에 사용할 수 있는 다양한 기능을 이제 소스 생성 파일에서도 사용할 수 있습니다. 또한 ReSharper 2021.2 버전은 Assembly Explorer(어셈블리 탐색기)에서 단일 파일 애플리케이션 지원, Dynamic Program Analysis에서 이슈 처리 개선, 레코드, 확장 메서드 및 catch 변수에 대한 향상된 이름 지정 규칙을 제공합니다.

다운로드

30일 무료 평가 이용 가능

C# 코드 분석

변수 값을 스왑하는 데 임시 변수를 사용하시나요? 그보다 더 나은 방법이 있습니다! ReSharper 2021.2의 새로운 Swap via deconstruction(구조 분해를 통한 스왑) 빠른 수정을 사용하여 코드를 업데이트할 수 있습니다!

코드의 할당 개수는 감소시키고 처리량은 늘리세요! 빈 배열 생성을 Array.Empty<T>로 대체할 수 있습니다.

Type[0]를 할당하는 경우 ReSharper는 Type.EmptyTypes를 사용하여 메모리 사용 현황을 효율적으로 개선하도록 제안합니다.

특정한 EventArgs가 필요하지 않은 경우 new EventArgs()EventArgs.Empty로 대체할 수 있다는 점을 ReSharper가 알려줍니다.

기타 개선 사항:

  • .editorconfiggenerated_code 프로퍼티를 사용하여 파일이나 폴더를 생성된 코드로 표시하고 처리 시 배제합니다.
  • 이제 지역 함수 및 클로저가 많은 멤버에 대한 코드 분석이 더욱 빨라졌습니다.
  • Find similar issues(유사한 이슈 찾기) 및 길고 복잡한 switch 문과 switch 식에 대한 코드 분석 성능이 향상되었습니다.

Nullable 참조 타입(NRT)

nullable 참조 타입을 활성화한 후 코드 베이스에 nullable 경고 억제가 많이 발생하나요?

ReSharper는 더 이상 필요하지 않으며 안전하게 제거 가능한 억제(!)를 알려줍니다.

새로운 컨텍스트 액션을 사용하면 범위 내에서 모든 nullable 경고 억제를 검색할 수 있습니다. 이후 Find Results(결과 찾기) 도구 창에서 억제의 필요 여부를 다시 평가할 수 있습니다.

null 값 가능성 변경을 위한 새로운 리팩터링이 도입되었습니다! 해당 리팩터링은 nullable 어노테이션(?)을 추가하거나 제거할 때 빠른 수정, Refactor This(다음을 리팩터링) 액션 또는 내부 리팩터링을 통해 이용할 수 있습니다.

ReSharper는 null 값 가능성을 표시하는 어노테이션을 업데이트하고 변경 사항을 코드 베이스에 적용하도록 제안합니다.

JetBrains.Annotations 속성 및 nullable 참조 타입을 사용할 경우 해당하는 빠른 수정이 포함된 몇 가지 새로운 검사가 지원됩니다.

JetBrains.Annotations 속성이 NRT 구문 및 컴파일러 지원 속성으로 업데이트됩니다! 예를 들어, ReSharper는 [CanBeNull] stringstring?으로 업데이트할 수 있습니다.

ReSharper가 [NotNull] string 또는 [ItemCanBeNull] List<string?> 등의 불필요한 JetBrains.Annotations 속성을 알려줍니다. 물론 코드 업데이트를 위한 빠른 수정도 제공됩니다.

타입 어노테이션 구문이 허용되지 않는 경우 빠른 수정이 포함된 새 검사가 컴파일러 지원 어노테이션을 추가합니다. 예시:

  • [JetBrains.Annotations.NotNull] T param -> [DisallowNull] T param(where T: class?)
  • [JetBrains.Annotations.CanBeNull] T -> [System.Diagnostics.MaybeNull] T(C# 8에서는 T? 구문이 허용되지 않는 경우)

ReSharper에 새로운 검사 및 빠른 수정이 추가되어 [DisallowNull], [AllowNull], [MaybeNull][NotNull] 등의 컴파일러 지원 어노테이션을 사용하는 데 도움이 됩니다.

새로운 검사는 불필요한 컴파일러 어노테이션(예: [AllowNull]이 nullable 타입에 적용되는 경우)을 탐지하며 빠른 수정을 통해 제거합니다.

nullable 참조 타입 구문을 사용할 수 있는 경우 ReSharper는 해당 구문을 사용하도록 제안합니다.

살펴볼 만한 다른 추가 개선 사항도 있습니다.

  • ReSharper는 변수가 nullable 타입이어야 하는지 확인하며, 가능한 경우 더 엄격한 타입을 생성합니다.
  • 다양한 컨텍스트 액션, 빠른 수정 및 접미사 템플릿이 업데이트되어 nullable 경고 억제에서 더욱 잘 작동합니다. nullable 경고 억제를 유지하거나 이미 억제된 원래 코드를 대체하는 새로운 코드에 대한 경고 억제를 추가합니다.
  • nullable 참조 타입의 제네릭 사용에 대한 지원이 개선되었습니다.

자세한 내용은 ReSharper 및 Rider 2021.2의 C# nullable 참조 타입 관련 새로운 기능 블로그 게시물에서 확인하세요.

소스 제너레이터 지원

소스 제너레이터를 사용하여 지루하고 반복적인 개발 업무를 줄이고 컴파일 시간에 코드를 생성할 수 있습니다. ReSharper 2021.2에서는 사람이 작성한 코드 파일에 지원되는 여러 기능을 소스 생성 파일에도 이용할 수 있습니다. 에디터 지원 및 디버거가 개선되었으며, 솔루션 전체 오류 분석(SWEA) 및 리팩터링에 대한 지원이 추가되었습니다.

생성된 코드의 경우 에디터와 마커 표시줄에 억제 및 오류가 표시됩니다.

이제 솔루션 전체 오류 분석(SWEA) 시 소스 제너레이터로 생성된 파일이 포함됩니다. 프로젝트에서 생성된 파일에 오류가 있는 경우 즉시 발견하여 오류로 이동할 수 있습니다.

소스 생성 파일을 포함하는 새 옵션을 사용하여 이 동작을 켜거나 끌 수 있습니다. 해당 동작은 ReSharper | Options(옵션) | Code Inspection(코드 검사) | Settings(설정) | Enable solution-wide analysis(솔루션 전체 분석 활성화)에 기본적으로 활성화되어 있습니다.

소스 생성 파일에서 리팩터링을 실행할 수 있습니다. Rename(이름 변경) 리팩터링을 사용하여 생성된 프로퍼티의 이름을 변경합니다. 또한 ReSharper는 수동으로 작성된 코드에서도 관련 심볼의 이름을 변경합니다.

마찬가지로 Change Signature(시그니처 변경)을 사용하면 변경 후 생성되는 코드의 컴파일 가능 여부를 확인할 수 있습니다.

Find Usages(사용 위치 찾기)를 통해 상속자를 검색하고, Ctrl+클릭Navigate To(다음으로 이동) 등을 사용하여 생성된 코드에서 수동으로 작성된 코드로 이동할 수 있습니다.

이벤트, 필드 및 프로퍼티 등의 클래스 멤버가 적절히 강조 표시되도록 의미 강조 표시가 활성화되었습니다. 모든 인레이 힌트가 적절한 위치에 표시됩니다.

디버그 중 ReSharper 자체 데이터 팁이 표시됩니다. 이는 더욱 강력한 디버그 지원 및 검색, 프로퍼티 강조 표시 등의 기능을 제공합니다.

이제 ReSharper는 소스 제너레이터가 VB.NET으로 생성한 코드를 지원합니다.

HttpClient URI 지원

이전 릴리스에서는 ASP.NET 경로 템플릿 지원이 구현되었습니다. 2021.2 버전에서는 이 방향성은 유지하되 HttpClient URI 문자열에 대한 더 나은 개선을 제공합니다.

  • HttpClient를 사용할 경우 코드 완성 기능은 [Route], [Http{Method}] 또는 [AcceptVerbs] 속성 어노테이션이 추가된 컨트롤러의 액션으로 변경 가능한 모든 URI를 제안합니다.
  • Go to Declaration(선언으로 이동)Find Usages(사용 위치 찾기)를 사용하여 컨트롤러 내 경로 속성 및 URI 사이를 쉽게 이동할 수 있습니다. 
  • 컨트롤러의 속성 경로 이름을 변경하면 URI의 사용 위치에 영향을 미치며, URI 문자열에서 직접 경로 이름을 변경할 수도 있습니다.

탐색

탐색에 유용한 기능이 추가되었습니다.

  • ReSharper는 디버그 중 코드를 보다 잘 이해합니다. 결과적으로 인터페이스 참조에서 Go To Declaration(선언으로 이동)(또는 Ctrl+클릭)을 호출하면 해당 구현으로 직접 이동합니다.
  • 이제 Go To Base/Inheritors(기본/생성자로 이동) 목록에 숨겨진 재정의도 표시됩니다.

코드 스타일 및 서식 지정

레코드, 확장 메서드 및 catch 변수에 대한 고급 규칙을 지정하는 것이 유용한 경우가 있습니다. 이번 릴리스부터 해당 규칙을 구성할 수 있습니다.

Pico 괄호(들여쓰기) 스타일을 선호하실 경우 해당 스타일을 사용할 수 있습니다. ReSharper | Options(옵션) | Code Editing(코드 편집) | C# | Formatting Style(서식 지정 스타일) | Braces Layout(괄호 레이아웃) 페이지의 Brace Layout(괄호 레이아웃) 탭에 Pico 스타일이 옵션으로 추가되었습니다.

일부 케이스의 디폴트 서식 지정 설정이 Visual Studio 디폴트 설정과 일치하도록 변경되었습니다.

C++ 함수 인라인화 리팩터링

새로운 Inline Function(함수 인라인화) 리팩터링을 사용하면 함수 호출을 함수 본문으로 빠르게 바꿀 수 있습니다. ReSharper C++는 필요한 변환을 수행하고, 모든 이름 충돌 오류를 처리하며 결과 코드의 서식을 다시 지정합니다.

C++ 타입 변환 힌트

ReSharper C++ 2021.2 버전은 예기치 않은 데이터 손실이나 성능 이슈를 초래할 수 있는 묵시적 타입 변환에 대한 인레이 힌트를 삽입합니다. 이제 ReSharper C++는 코드에서 묵시적 변환이 발생하는 위치를 알려줍니다.

ReSharper C++ 2021.2의 새로운 기능

Dynamic Program Analysis(DPA)

이슈 처리 개선

이제 DPA는 각 이슈에 대해 두 가지 값(최댓값과 현재 값)을 저장합니다. 이 방법은 거짓 음성을 피하는데 도움이 됩니다. 이전에는 이슈가 해결되었기 때문이 아니라 시작 조건(프로그램 실행 시간 단축, 필수 기능이 실행되지 않는 등)이 변경되었기 때문에 이슈가 임계값 이하로 떨어지면 이슈 목록에서 사라지는 일이 발생할 수 있었습니다.

기타 업데이트

  • 성능 프로파일링을 시작하면 DPA는 자동으로 비활성화됩니다.
  • 이제 Dynamic Program Analysis 창에서 여러 이슈를 선택할 수 있습니다.
  • SuppressMessage 속성을 사용한 이슈 억제는 비동기식 메서드에서 작동합니다.

어셈블리 탐색기

The embedded decompiler can now decompile single-file apps. NET Core 3.1, .NET 5 및 곧 출시될 .NET 6 SDK의 단일 파일 형식이 지원됩니다. 어셈블리 탐색기를 사용하면 평소와 마찬가지로 단일 파일 앱 내에서 번들로 제공되는 어셈블리를 탐색할 수 있습니다.

개선된 커버리지 성능 dotUltimate

개선된 커버리지 성능
  • 이제 dotCover는 어셈블리 하나에서 테스트 클래스의 커버리지 분석을 동시에 실행할 수 있습니다. 일부 시나리오에서 커버리지 분석의 속도가 더욱 향상될 수 있습니다.
  • .NET Core 및 .NET 프로젝트에서 유닛 테스트 러너를 미리 로드할 수 있습니다(이로써 유닛 테스트 러너가 메모리에 미리 로드되므로 커버리지 분석을 더 빠르게 시작 가능).

dotCover 2021.2의 새로운 기능

메모리 할당 분석 dotUltimate

이번 릴리스에서 메모리 할당의 분석 방식이 한층 개선되었습니다. 두 개의 새 탭이 Memory Allocation(메모리 할당) 뷰에 추가되었습니다.

  • Methods(메서드) 탭에서 메모리를 할당한 메서드의 일반 목록을 분석할 수 있습니다.
  • Call Tree(호출 트리) 탭에서 할당 호출 트리를 분석할 수 있습니다. 트리의 각 노드에는 호출된 메서드뿐 아니라 호출로 할당된 객체가 표시됩니다.

dotMemory 2021.2의 새로운 기능

네이티브 프로파일링 dotUltimate

이제 Windows에서 네이티브 애플리케이션을 프로파일링할 수 있습니다. 프로파일링 세션 시작 시 원격 서버에서 네이티브 소스 심볼 파일 다운로드 옵션이 제공됩니다. 네이티브 프로파일링은 Timeline(타임라인) 프로파일링 유형에만 지원됩니다.

기타

Razor

대형 뷰에서 작업하는 Razor 개발자는 에디터에서 지연이 발생할 경우 CPU 집약적 지원 및 자동 제안을 끌 수 있습니다. ReSharper | Options(옵션) | Environment(환경) | Editor(에디터) | Behavior(동작) | Razor | Allow CPU-intensive typing assist(CPU 집약적 입력 지원 허용)에서 해당 설정을 확인할 수 있습니다.

ReSharper 명령줄 도구

InspectCode 도구에 상당한 수준의 변경 사항이 추가되었습니다. 2021.2 버전부터 InspectCode에서 분석을 시작하기 전 자동으로 NuGet 패키지를 복구하고 솔루션을 빌드합니다. 해당 동작을 원치 않을 경우 --no-build 옵션을 사용하여 NuGet 패키지 복구 및 솔루션 빌드를 비활성화하세요.

다운로드

30일 무료 평가 이용 가능