Rider 2020.1에서는 macOS 및 Linux에서 백엔드를 기본적으로 .NET Core 런타임에서 실행하고 Xamarin Hot Reload 및 Dynamic Program Analysis를 제공합니다. 또한 에디터의 심각도를 쉽게 구성할 수 있는 방법을 도입하고 정수값에 대한 데이터 흐름 분석과 빨라진 코드 완성 기능을 추가합니다. 디버그 창도 새롭게 작업되었으며 Extract Class(클래스 추출) 리팩터링 및 커버리지 필터를 이제 사용할 수 있습니다.
Rider .NET Core 에디션을 환영해 주세요! 백엔드가 macOS 및 Linux에서 마침내 Mono 런타임 대신 .NET Core 런타임에서 기본적으로 실행됩니다. 이에 따라 다음과 같은 변화를 바로 느끼실 것입니다.
현재 .NET Core 버전은 탁월한 최신 버전인 3.1이며 3.0 버전에 비해 성능이 크게 향상되었습니다.
단, 지금은 Windows가 지원되지 않으며 macOS 및 Linux만 지원됩니다. Windows 지원은 올해 말에 추가될 예정입니다.
Mono에서 .NET Core로의 전환에 관해 자세히 알아보고 성능 차트를 확인하고 싶으신가요? 그렇다면 이 블로그 게시물을 확인하세요!
.NET Core에서 실행되는 Rider 백엔드에 문제가 발생하여 Mono 런타임으로 돌아가려는 경우, Help | Switch IDE runtime to Mono(IDE 런타임을 Mono로 전환)를 선택하세요. 그리고 문제가 생겼다면 반드시 JetBrains에 알려주세요.
Xamarin Hot Reload에 대한 조기 지원이 시작되었습니다! Rider는 이제 기기 또는 시뮬레이터에서 디버그하는 동안 Xamarin Forms XAML에서 만들어진 변경 내용을 애플리케이션에 자동으로 적용하고 전체 애플리케이션을 다시 빌드 및 배포하지 않습니다.
단, 한 가지 제한 사항에 유의해 주세요. Rider가 설치된 PC/Notebook과 iOS 기기가 동일한 WiFi 네트워크에 있지 않으면 iOS 기기를 USB로 PC/Notebook에 연결해도 Hot Reload가 작동하지 않습니다.
이 밖에 Xamarin 지원에서 중요한 수정이 한 가지 적용되었습니다. iPhone XS Max 기기에서 Xamarin.iOS 프로젝트를 실행할 때 “Invalid target architecture 'arm64e'”(잘못된 대상 아키텍처 'arm64e') 오류가 더 이상 표시되지 않습니다.
자세한 업데이트 내용은 블로그 게시물을 확인하세요.
Dynamic Program Analysis가 도입되었다는 기쁜 소식을 전해 드립니다. DPA는 Rider에서 프로젝트가 실행될 때마다 메모리 할당 데이터 수집을 시작합니다. 애플리케이션이 닫히면 탐지된 문제 목록(클로저 및 크고 작은 개체 힙에 대한 할당)을 표시합니다. 이 기능의 가장 좋은 점은 “프로파일링 세션”을 시작하고 스냅샷을 만들 필요가 없다는 것입니다. 평소처럼 작업을 하고 있으면 거의 모든 데이터가 백그라운드에서 수집되며 오버헤드도 거의 없습니다. 다양한 실제 솔루션에서 DPA를 테스트한 결과 속도 지연은 0~2%에 불과했습니다.
참고사항: DPA는 Windows에서만 사용할 수 있으며 활성화하기 위해 별도의 라이선스가 필요하지 않습니다.
이번 Rider 버전에서는 애플리케이션 내 정수값의 사용 위치를 추적하는 새로운 유형의 코드 분석 기능이 도입되었습니다. 이 새로운 유형의 분석은 모든 int
지역 변수의 값이 어떻게 변하는지 추적하고, 그러한 변수에 대한 모든 공통 연산의 정확성을 검증하여 쓸모 없거나 오류가 있는 코드를 탐지합니다. 즉, 다음을 경고합니다.
true
또는 false
결과를 도출 int
값을 확인하는 switch
의 경우1
곱하기, 0
더하기 등과 같은 의미 없는 산술 연산 int
오버플로0
으로 나누기또한 분석의 정확성을 높이기 위해 int
유형의 유형 멤버 및 매개변수와 함께 사용하는 두 가지 새로운 JetBrains.Annotations 속성인 [NonNegativeValue]
및 [ValueRange(from, to)]
를 추가했습니다. 이러한 속성은 특정 int
멤버의 값이 런타임에서 어떻게 달라질 수 있는지 지정합니다.
ScriptableObjects
의 사용 위치와 직렬화된 필드의 값을 표시합니다. Boo.Lang.List
또는 System.Diagnostics.Debug
를 제안하지 않습니다. C# 8 언어 기능에 대한 지원이 계속 추가되고 있습니다. 그동안에는 null 가능 참조 타입(NRT)을 지원하기 위해 C# 언어 지원의 많은 부분을 새롭게 바꾸어 코드 분석, 리팩터링 및 ReSharper Build 등의 기타 기능을 준비해왔습니다. Rider 2020.1에서는 코드 분석 기능이 null 가능 참조 타입과 관련된 컴파일 경고를 보고하고 대부분의 경고에 대한 빠른 수정을 제공합니다.
또한 몇가지 새로운 검사 및 빠른 수정도 추가되었습니다.
sync
오버로드 대신 async
오버로드를 탐지하고 사용합니다. nameof
표현식을 사용하여 현재 유형의 이름을 가져옵니다. 지난 한 해 동안 코드 완성 팝업이 표시되기까지 너무 오래 걸린다는 보고를 여러 번 받았습니다. 이제 이 문제를 해결하여 특히 큰 솔루션에서 코드 입력을 시작하면 코드 완성 팝업이 훨씬 빠르게 표시됩니다.
이 릴리스에 포함된 또 다른 매우 편리한 기능은 Obsolete(사용 중단)로 표시된 멤버를 보지 않으려면 코드 완성에서 숨길 수 있다는 것입니다.
마지막으로, 코드 완성 팝업에서 항목을 완료하면 코드 스타일 설정이 적용됩니다.
Debug(디버그) 도구 창의 UI를 완전히 새롭게 작업하여 최대한 깔끔하게 정돈했습니다. 디버그 세션이 하나만 실행되면 모든 탭이 이제 단일한 레벨에 배치되어 탭 레이아웃이 간소해집니다. 탭 캡션은 공간을 덜 차지하게 되어 디버거 내용에 더 많은 공간이 할애됩니다. 세션이 여러 개인 경우 세션을 분리하기 위해 하나 이상의 탭 레이어가 추가됩니다.
동시에, Threads(스레드) 및 Frames(프레임) 뷰가 결합되었습니다. 당장 Threads 뷰가 필요하지 않은 경우 “Hide threads view”(스레드 뷰 숨기기) 아이콘을 클릭하여 숨길 수 있습니다.
또한 디버그 환경을 개선하기 위해 디버거 엔진을 업데이트했습니다.
이 새로운 기능을 사용하면 에디터의 강조 표시 수준을 쉽게 변경할 수 있습니다. 비 모달 팝업에서 한 번만 클릭하면 Code Vision, 매개변수 힌트, Unity 성능 힌트, 오류, 경고, 제안, 컨텍스트 액션 및 기타 여러 요소를 켜거나 끌 수 있습니다. 코드 에디터 탭의 오른쪽 하단에서 연필 아이콘을 찾아보세요.
Unit Test Session(유닛 테스트 세션) 및 Unit Test Explorer(유닛 테스트 탐색기) 창의 도구 모음이 조정되었습니다.
그 외에도 다음과 같은 세 가지 중요한 기능이 추가되었습니다.
자세히 알아보기: Rider 2020.1에서의 유닛 테스트 업데이트
Rider 2019.3에서는 'Checking for changes'(변경 사항 확인) 액션의 속도를 크게 개선한 실험적 TFS 클라이언트를 추가했습니다. 그리고 이번 릴리스 주기에서 JetBrains는 이 클라이언트에 많은 노력을 기울였습니다.
그러한 노력 끝에, TFS 클라이언트가 처음 공식 출시되고 성능도 크게 개선되었습니다. 개선 사항 중 가장 중요한 두 가지를 말씀드리겠습니다. 먼저, 버전 관리 통합 기능을 활성화하면 Visual Studio에서 로컬로 생성한 TFS 작업 공간에서 작동합니다. 즉, 이제 Rider에서 로컬 작업 공간을 처음부터 다시 생성할 필요가 없습니다. 둘째, 삭제 및 롤백 작업의 성능이 대폭 향상되었습니다.
TFS 클라이언트 사용을 시작하려면 Settings(설정) | Version Control(버전 관리) | TFVC를 활성화하세요.
모든 JetBrains IDE와 마찬가지로 Rider는 이제 모든 테마에서 JetBrains Mono를 기본 글꼴로 사용합니다. 이 변화가 여러분의 마음에 드셨으면 좋겠습니다!
Rider에서 지금까지 누락된 ReSharper 기능이 하나 더 있었습니다. 바로 솔루션 내 파일에서 코드를 붙여넣을 때 네임스페이스를 자동으로 가져오는 기능입니다.
NuGet 관련 파일을 수동으로 편집하는 분이라면 이제 Rider에서 코드 완성, 구문 유효성 검사, 빠른 문서 팝업을 포함하여 NuGet.Config, packages.config, *.nuspec 파일 편집에 대한 조기 지원을 제공하므로 지원 기능을 편리하게 이용하실 수 있을 것입니다.
다음의 사소한 개선 사항들도 언급할 가치가 있습니다.
ReSharper에서 수많은 사용자가 요청하고 오랫동안 기다려온 리팩터링인 Extract Class(클래스 추출)가 마침내 Rider에 구현되었습니다.
이 기능이 왜 필요한지 궁금하신가요? 서로 다른 2개의 클래스가 반드시 있어야 실행되는 클래스가 있다고 가정해 보세요. 이때 이 리팩터링을 사용하면 복잡한 클래스를 단일한 책임을 가진 2개의 클래스로 가장 안전하고 효과적으로 분해할 수 있습니다. Extract Class로 이전 클래스에서 새 클래스로 이동할 메서드 및 필드를 선택할 수 있고 또한 손상된 종속성 및 접근성 문제를 경고하고 충돌 해결 옵션을 제안합니다.
Solution Explorer(솔루션 탐색기) 뷰에 Assemblies 폴더의 하위 폴더로서의 Implicit references(묵시적 참조) 및 MSBuild import targets(MSBuild 가져오기 대상)라는 프로젝트에 대한 자세한 정보를 제공하는 유용한 새 폴더 2개가 도입되었습니다.
그 외에도 몇가지 소소한 업데이트가 있습니다.
Rider에서 얻은 유닛 테스트 커버리지 결과를 더 정밀하게 제어할 수 있도록 커버리지 필터를 추가했습니다. 필터를 지정하려면 Preferences(환경 설정)/Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포) | dotCover | Filtering(필터링)으로 이동하세요.
Linux 또는 macOS에서 성능 프로파일링을 수행하는 분께 좋은 소식이 있습니다. 드디어 이 운영 체제에서 Tracing(추적)0> 모드로 .NET Core 애플리케이션을 프로파일링할 수 있게 되었습니다. 또한 Linux에서 .NET Core 애플리케이션에 프로파일러를 연결할 수 있습니다.
Rider의 디컴파일러 및 IL Viewer(IL 뷰어)에 다음의 새로운 기능이 몇가지 추가되었습니다.
Rider의 F# 지원을 향상하기 위해 일상적 루틴 작업에 도움이 되는 수많은 개선 사항과 수정 사항을 준비했습니다.
this.Property
) 및 인덱서 표현식("foo".[1]
)). ()
표현식을 선택할 수 있습니다.업데이트 및 수정 사항에 관한 자세한 내용은 GitHub 저장소를 참조하세요.