ReSharper 2020.2는 C#8 및 null 가능한 참조 유형에 대한 새로운 검사 및 빠른 수정, 고대하던 기능인 Code Cleanup on Save(저장 시 코드 정리), 향상된 유닛 테스트 러너 및 접근성 개선을 제공합니다. 또한 ReSharper C++는 한 차원 높은 Unreal Engine 개발 경험을 제공하고 C++/CLI 지원, 탐색 및 코드 분석을 크게 개선했습니다.
30일 무료 평가 이용 가능
이제 null 값 가능성 코드 분석이 더 많은 사례를 인식하므로 구조 분해 및 foreach
순환에서 잘못된 null 값 가능성을 추적할 수 있습니다. 또한 그에 해당하는 빠른 수정도 제공합니다.
코드 분석 기능은 null 가능한 참조 유형이 비활성화된 코드(#nullable disable
)에서도 API에 대한 JetBrains.Annotations 속성(NotNull
및 CanBeNull
)을 고려합니다.
프로젝트에 System.Linq.Async
NuGet 패키지가 설치되어 있으면 IAsyncEnumerable<T>
에서 foreach
를 LINQ로 변환하고 LINQ를 코드로 변환하기 위한 컨텍스트 액션을 사용할 수도 있습니다.
이제 적절한 빠른 수정으로 IEqualityComparer<T>
및 IComparer<T>
구현을 쉽게 생성할 수 있습니다.
코드 분석 기능은 구현되거나 재정의된 멤버의 null 값 가능성을 확인할 때 컴파일러 어노테이션(예: AllowNull
및 DisallowNull
)을 고려합니다.
변수 및 반환 유형이 null 가능 값을 갖지 않거나 반환하지 않는 경우 "not nullable"로 설정하는 새로운 검사 및 빠른 수정이 생겼습니다.
이제 코드 분석이 .editorconfig 파일에서 dotnet_diagnostic 규칙을 따를 수 있습니다. .editorconfig 파일에서 검사의 심각도를 지정하면(예: dotnet_diagnostic.CS1058.severity = hint
), ReSharper가 그에 따라 검사를 표시합니다.
인터페이스 기능에서 디폴트 구현을 위한 지원이 이 릴리스에서 향상되었습니다. 코드 에디터의 왼쪽 여백에서는 메서드가 구현되거나 재정의되었음을 표시하며 리팩터링 및 탐색 기능은 이 C# 언어 기능을 인식합니다.
이제 XAML 코드에서 매개변수 힌트를 사용할 수 있습니다. 마크업 프로퍼티 이름 및 DataContext
를 비롯해 바깥쪽 여백(margin) 및 안쪽 여백(padding)에 관한 힌트를 제공하므로 이러한 요소의 순서를 외우고 싶지 않은 경우 편리합니다.
Alt+Enter 메뉴를 눌러 Suppress nullable warning with !(!로 null 가능 경고 억제) 빠른 수정을 해결책으로 사용하지 않도록 설정할 수 있습니다.
이제 파일 저장 시 코드 정리가 자동으로 시작되도록 ReSharper를 구성할 수 있습니다! 마침내 구현되었죠!
타사 플러그인도 더 이상 필요하지 않습니다. 이 기능은 ReSharper | Options(옵션) | Code Editing(코드 편집) | Code Cleanup(코드 정리)
옵션 페이지에서 활성화할 수 있습니다.
Code Cleanup(코드 정리)을 실행할 때 recently modified files(최근에 수정한 파일) 및 recently opened files(최근에 열어본 파일) 등의 세분화된 범위가 새로 추가되어 Code Cleanup(코드 정리)에서 전체 솔루션을 실행할 필요가 없으므로 결과 산출 시간이 크게 단축됩니다. 범위를 더 정확하게 조정하려면 "recently(최근)"로 적합한 항목을 지정할 수 있습니다.
코드 정리가 완료되면 파일이 자동 저장됩니다. 이 기능은 ReSharper | Options(옵션) | Code Editing(코드 편집) | Code Cleanup(코드 정리)
옵션 페이지에서 활성화할 수 있습니다.
코드 정리 실행 시간을 줄이기 위한 몇가지 개선 사항이 있습니다.
유닛 테스트 러너를 처음부터 다시 작업하여 Visual Studio 프로세스에서 실행되는 .NET Framework 및 .NET Core 두 런타임에 동일한 러너가 적용되도록 하였습니다. 이 방법으로 유닛 테스트 검색, 실행, 디버그와 관련된 많은 문제를 해결하고 .NET Core 테스트의 유닛 테스트 계층 구조를 완전히 제어할 수 있게 되었습니다.
새로운 테스트 러너는 다음을 기본적으로 지원합니다.
UI에서 가장 눈에 띄는 것은 ReSharper가 xUnit 및 NUnit 프레임워크에 대한 .NET Core 테스트에서 DisplayName
속성을 지원한다는 것입니다.
유닛 테스트 트리에 필터를 적용하면(예: Passed(통과)/Failed(실패) 등) 카운터가 2개의 개별 숫자, 즉 모든 테스트의 총 수와 필터 기준을 만족하는 테스트 수를 제공합니다.
Navigate To(다음으로 이동) 메뉴에 두 가지 새로운 액션이 추가되었습니다.
NUnit의 Assert.Multiple
메서드에 대한 지원이 도입되어 첫 번째 실패 후 코드를 종료하지 않고도 여러 어설션을 확인할 수 있게 되었습니다.
기간별로 그룹을 지정할 수 있는 시간 범위를 옵션에서 바로 편집할 수 있습니다.
이번 릴리스에서는 JAWS, NVDA, Microsoft Narrator 등의 스크린 리더에 대한 지원이 향상되었습니다. 이제 이러한 스크린 리더는 다음 항목에 더 원활하게 액세스할 수 있습니다.
UWP 개발자에게 희소식이 있습니다. x:Bind
를 사용한 컴파일된 바인딩이 드디어 지원됩니다!
ReSharper는 x:Bind
코드를 올바르게 해결하고 여러 검사와 그에 해당하는 빠른 수정을 제공합니다. 또한 누락된 특성 setter, BindBack
속성 및 오버로드 충돌이 있을 경우 경고합니다. 그외에 C# 코드 비하인드 내에서 적절한 필드, 프로퍼티 또는 메서드를 생성하기 위한 Create from Usage(사용 위치에서 생성) 빠른 수정 모음이 있습니다.
x:Bind 표현식 내 propertyPath
, BindBack
, UpdateSourceTrigger
속성에 대한 코드 완성 및 매개변수 정보가 있습니다.
이제 Change Signature(시그니처 변경) 및 Safe Delete(안전한 삭제) 리팩터링은 XAML 코드의 메서드 사용 위치를 인식하고 업데이트합니다. 또한 Make Static/Const(정적/상수로 변환) 및 Encapsulate Field(필드 캡슐화) 리팩터링은 XAML 코드에서 바로 작동하고 C# 코드 비하인드에서 호출하면 XAML 사용 위치를 올바르게 업데이트합니다.
null 값 가능성 인식 기능이 x:Bind
코드 분석에 통합됩니다. C# 코드에 CanBeNull
및 NotNull
속성이 있는 경우(예: propertyPath
에서 사용된 메서드의 인수에 대한 "Possible System.NullReferenceException
" 및 "Possible null
assignment to non-nullable entity"), ReSharper에서 XAML 코드 내부에 null 관련 검사를 바로 표시합니다.
Find Usages(사용 위치 검색) 및 Go to Declaration(선언으로 이동)과 같은 다른 ReSharper 기능도 x:Bind
바인딩을 인식합니다.
2020.1에서는 Rider가 macOS 및 Linux상에서 Mono에서 .NET Core로 마이그레이션되었습니다. 이번 릴리스에서 ReSharper 명령줄 도구는 Windows, Linux 및 macOS의 .NET Core에서 실행됩니다.
ReSharper 명령줄 도구는 더 이상 Mono 번들로 제공되지 않으며 macOS 및 Linux용 도구에 .NET Core 3.1이 필요합니다.
Mono 대신 .NET Core를 런타임으로 사용할 때의 또 다른 이점은 ReSharper 명령줄 도구를 .NET Core 전역 도구로 설치할 수 있다는 것입니다. 설치하려면 다음 명령어를 실행하세요.
dotnet tool install -g JetBrains.ReSharper.GlobalTools --version 2020.2.0-*
그럼 다음 jb tool_name [options]
(으)로 도구를 실행하세요. 다음은 예시입니다.
jb inspectcode yourSolution.sln -o=<pathToOutputFile>
이 릴리스에서는 그래프를 그리는 데 사용되는 yFiles 엔진이 최신 버전으로 업데이트되었습니다. 이 새로운 yFiles 버전은 최적화 외에도 결과 그래프를 그리는 성능을 크게 향상합니다.
이제 결과 그래프를 다음과 같은 새로운 형식으로 내보낼 수 있습니다.
다이어그램 도구 창에서 Visual Studio 다크 테마가 드디어 지원됩니다.
코드의 외부 어셈블리에서 유형의 사용 위치를 탐색하기가 훨씬 쉬워졌습니다. ReSharper는 Go to Type(유형으로 이동) 검색 결과에서 Find Usages(사용 위치 검색)로 바로 이동할 수 있습니다. 이 기능을 사용하려면 유형을 검색하고 키보드 또는 마우스오버로 목록에서 해당 유형을 강조 표시한 다음 해당 단축키를 사용하여 Find Usages(사용 위치 찾기) 또는 Go to Usage(사용 위치로 이동)를 호출하세요.
2020.2 버전 릴리스부터 사용자가 선호하는 단축키 구성에서 이러한 액션에 매핑된 단축키를 사용해 몇가지 ReSharper 액션을 호출할 수 있습니다(예: Go to Symbol(심볼로 이동) 및 Go to File Member(파일 멤버로 이동) 대화상자에서 바로 빠른 문서를 호출).
Peek Definition(정의 피킹) 뷰에서 일부 일반적 ReSharper 액션의 결과를 표시하기 위해 새로운 Peek 액션 모음이 추가되었습니다.
Peek Implementation(구현 피킹) 액션을 호출하여 Ctrl+Alt를 길게 누른 상태에서 마우스 휠을 클릭하여 구현의 Peek(피킹) 뷰를 열거나 심볼에 캐럿을 배치한 후 Ctrl+Alt+Q를 누르세요.
Peek Base Symbols(기본 심볼 피킹) 액션을 호출하여 Peek(피킹) 뷰 내의 모든 기본 심볼을 확인하세요. 간단히 심볼 위에서 Shift+Alt+Q를 누르기만 하면 실행됩니다.
이 릴리스에서는 Conflicts(충돌) 대화상자가 리팩터링 인터페이스에서 별도의 단계로 재설계되었습니다. 또한 이전의 일반 목록이 파일별로 그룹화된 트리로 대체되었습니다.
표현식에서 Introduce parameter(매개변수 삽입) 또는 Introduce field(필드 삽입) 리팩터링을 호출하면 ReSharper에서 해당 리팩터링을 적용할 표현식 부분을 묻습니다.
ReSharper C++ 2020.2에는 Unreal Engine 프로젝트 모델 지원이 포함되어 include
지시문에 대한 더 스마트한 자동 가져오기 제안과 다양한 솔루션 구성에 대한 지원이 제공됩니다. 또한 ReSharper C++는 검사 심각도 및 코드 생성 액션을 조정하여 Unreal Engine 가이드라인을 철저히 준수합니다.
더 간편한 탐색을 위해 Search Everywhere(전체 검색)/Go To(이동) 기능은 이제 엔진 소스의 심볼을 라이브러리 심볼처럼 취급합니다. 또한 Unreal Engine 가이드라인을 강제하고 Unreal Editor에서 프로젝트 파일을 새로 고치도록 알려주는 몇가지 새로운 검사가 있습니다.
ReSharper 라이선스에 ReSharper 및 ReSharper C++ 제품이 모두 포함되며 언어 간 브리지인 C++/CLI에 대한 지원이 다양하게 업데이트되고 C++/CLI와 C# 간의 상호 운용성도 크게 개선되었습니다.
ReSharper C++에서 C# 코드 내 파생 심볼을 검색할 수 있게 되고 Go to Base Symbols(기본 심볼로 이동) 및 Go to Derived Symbols(파생 심볼로 이동) 기능이 가져온 CLR 엔티티에서도 작동합니다.
이제 ReSharper C++는 메모리 할당 방식을 검사하고 대상 유형이 유효하지 않은 경우 gcnew
를 new
로 또는 그 반대로 대체하도록 빠른 수정을 제안합니다. 사용자가 관리형 클래스 또는 인터페이스에서 C++ final
지정자를 사용하려고 하면 다른 검사에서 이를 경고하고 sealed
지정자를 사용하도록 빠른 수정을 제안합니다. 또한 빠른 수정을 사용하여 C 스타일을 safe_cast
로 형 변환할 수 있습니다.
이제 ReSharper는 정렬된 그룹 중 일부의 서식만 다시 지정된 경우에도 유사한 코드의 열을 올바르게 정렬하므로 세미콜론 또는 괄호를 추가해도 정렬이 중단되지 않습니다.
dotCover 콘솔 러너가 몇가지 개선되었습니다.
--reportype=SummaryXml
매개변수를 사용하면 포함 클래스, 메서드 및 구문의 총 수에 대한 데이터가 포함된 새로운 Summary(요약) 보고서 유형을 생성할 수 있습니다. --reporttype=HTML,SummaryXml
--output=report.html;summary.xml
와 같이 여러 유형의 보고서를 한 번에 생성할 수 있습니다. 독립실행형 dotTrace와 Rider의 dotTrace는 둘 다 Windows 기반 Mono/Unity 애플리케이션의 네이티브 부분을 프로파일링할 수 있습니다. 'Enable native profiling(기본 프로파일링 활성화)' 옵션으로 세션을 시작하면 성능 스냅샷에 네이티브 및 관리형 호출 스택이 모두 표시됩니다. 이 기능은 Unity 게임에서 성능 병목현상을 분석하는 데 도움이 될 수 있습니다.
dotTrace 콘솔 프로파일러가 몇가지 개선되었습니다.
이제 고정된 객체와 GC 루트에서 도달할 수 없는 객체를 별도의 객체 모음으로 열 수 있습니다.
dotMemory 명령줄 프로파일러의 개선 사항은 다음과 같습니다.
dotPeek은 최신 버전의 C#에 대한 지원을 지속적으로 개선하고 있으며 새로운 릴리스에서는 다음을 제공합니다.
throw
식NullablePublicOnly
속성30일 무료 평가 이용 가능