ReSharper 2021.1은 코드 분석 업데이트, ASP.NET 경로 템플릿 지원, 튜플 구성 요소 이름 변경 등을 제공합니다.
30일 무료 평가 이용 가능
Merge into pattern(패턴에 병합) 검사가 이제 더 많은 코드 패턴을 처리할 수 있습니다. Null 검사 및 다른 검사를 하나의 패턴 검사로 만듭니다.
conditional?.Access
표현식에서 중첩된 패턴 일치로 검사를 재작성합니다.
검사를 병합하여 if
구문의 중첩을 줄입니다.
마지막으로, 패턴을 전체 양식으로 확장하여 간단한 var (a,b)
구조 분해 패턴 내부에 패턴을 병합할 수 있습니다.
C# 9.0 레코드에 대한 지원을 확대했습니다. Extract interface(인터페이스 추출) 및 Extract superclass(상위 클래스 추출) 리팩터링이 이제 File Layout(파일 레이아웃) 및 XML 문서와 관련된 기능과 마찬가지로 레코드
선언과 함께 작동합니다.
여러 가지 새로운 검사와 액션을 도입했습니다. 레코드
선언의 프로퍼티에 대한 Redundant explicit property declaration(중복된 명시적 프로퍼티 선언)은 위치 매개변수 및 묵시적 프로퍼티 선언이 있는 레코드를 사용하도록 코드를 마이그레이션을 할 때 도움이 될 수 있습니다. 해당하는 빠른 수정인 Remove explicit property(명시적 프로퍼티 제거)가 포함되어 있습니다.
레코드
를 클래스
로 전환하기로 결정한 경우, To class(클래스로 이동) 액션이 위치 매개변수와 기본 생성자를 처리합니다. 반대로 작동하는 To record(레코드로 이동) 액션도 있습니다.
위치 매개변수와 기본 생성자를 일반 프로퍼티, 생성자 및 명시적 Deconstruct()
메서드로 다시 작성해야 할 때마다 To explicit constructor(명시적 생성자로 이동) 컨텍스트 액션을 사용하는 것이 좋습니다.
깔끔하게 정리하는 데도 신경을 써, Redundant 'record' type declaration body(중복 '레코드' 유형 선언 본문) 검사 및 해당하는 빠른 수정이 빈 레코드
유형 선언 본문을 세미콜론으로 대체합니다.
Find usages(사용 위치 찾기)가 이제 레코드 기본 생성자의 사용 위치와 묵시적 Deconstruct()
메서드의 사용 위치를 검색합니다.
새로운 검사인 Inline temporary variable(임시 변수 인라인화)를 추가했습니다. 때로는 프로그래밍을 할 때 서로 다른 이름으로 동일한 값을 반복해서 사용하는 경우가 있습니다. 이러한 코드를 더 투명하게 만들 수 있을까요? 물론입니다. 여기서 ReSharper가 도움을 줍니다.
임시 변수가 다른 값으로 초기화되거나 나중에 코드에서 변경되어야 하는 경우 버그를 찾는 데 도움을 줄 수도 있습니다.
논리적 not 패턴으로 유형 검사를 훨씬 더 쉽게 읽을 수 있습니다. ReSharper는 not 패턴을 우선시하고 !()
구문을 삭제하는 방법을 이용합니다.
코드를 단순화하는 데 도움이 된다면 ReSharper가 이제 Slice
및 Substring
대신 범위 연산자의 사용을 제안합니다.
Namespace does not correspond to file location(네임스페이스가 파일 위치와 일치하지 않음) 검사가 이제 최상위 코드가 있는 파일에서 표시되지 않습니다.
자동 프로퍼티가 계산된 프로퍼티로 대체될 수 있는지 여부를 확인하는 또 다른 새로운 검사와 대체를 위한 빠른 수정이 제공됩니다.
C# 10.0 지원을 위한 첫 번째 단계로 ReSharper에서 상수 문자열 보간 기능을 처리 할 수 있도록 했습니다.
2021.1의 코드 분석에 대한 자세한 정보는 블로그에서 곧 확인하실 수 있습니다!
경로 템플릿은 MVC 애플리케이션에서 HTTP 요청이 애플리케이션의 실행 가능한 엔드포인트에 결부되는 방식을 구성하는 데 널리 사용됩니다. 2021.1에서는 경로 템플릿에 대한 지원을 도입하여, 이제 ReSharper에서 구조 탐색, 검사 및 빠른 수정을 제공합니다. 몇 가지 예를 살펴보겠습니다.
가장 기본적인 검사는 경로 템플릿 구문 오류를 확인합니다. 실수로 템플릿 중간에 catch-all 매개변수 경로를 배치하고, catch-all 매개변수를 선택 사항으로 선언하고, 선택적 매개변수의 기본값을 추가하는 등을 예로 들 수 있습니다.
경로 매개변수에서 흥미로운 사례가 많이 나올 수 있습니다. 컨트롤러와 액션에서 같은 이름의 매개변수를 선언하면 어떻게 될까요? ReSharper가 이를 경고합니다.
한편으로는, 매개변수가 누락될 수 있습니다. 이 경우 ReSharper는 컨트롤러의 속성 또는 액션에서 이 매개변수를 추가할 것을 제안합니다. 유형 제약 조건이 있는 경우, 매개변수 유형을 추론하는 데 사용됩니다.
제약 조건은 코드 분석에 도움이 됩니다. ReSharper는 적용된 제약 조건 자체가 올바른지, 매개변수가 실제로 제약 조건을 충족하는지 확인합니다.
ReSharper는 제약 조건에 따라 매개변수 유형이 더 엄격할 수 있는지 여부를 분석하고 유형 변경을 제안할 수도 있습니다. 의도적으로 매개변수에 다른 유형을 사용한 경우, 제안을 무시하면 됩니다.
ReSharper는 사용자 지정 제약 조건도 인식합니다. 경우에 따라 인식되지 않는 경우 JetBrains.Annotations에서 제공하는 [RouteParameterConstraint]
속성으로 제약 클래스에 어노테이션을 추가하세요.
표준 팩의 다른 기능의 경우와 마찬가지로 코드 완성, 구조 탐색 및 코드 재배열이 있습니다.
더 이상 경로 매개변수의 이름을 수동으로 변경할 필요가 없습니다. 이제 Rename(이름 변경) 리팩터링을 사용하면 됩니다.
지금은 위의 모든 기능이 속성 기반 라우팅에서 작동합니다. 이번 새 버전에 대한 여러분의 의견을 저희에게 알려주세요.
ASP.NET Core 경로 템플릿에 대한 자세한 내용은 이 블로그 게시물을 참조하세요.
이름 지정된 튜플은 C# 7 이후로 우리와 함께 해왔지만 구성 요소의 이름 변경은 수동으로 해야만 했습니다. 이제 더 이상 그럴 필요가 없이 리팩터링을 호출하면 됩니다.
새로운 탐색 액션인 Navigate to Windows Explorer(Windows Explorer로 이동)가 추가되었습니다 Navigate(탐색) | Navigate to(탐색 위치) 메뉴를 이용하거나 Ctrl+Shift+A를 누르고 이름을 입력하면 됩니다. 파일을 복사하거나 저장소 내부의 경로를 복사하는 등 파일 자체로 작업을 하는 경우, 또는 Windows 탐색기용 Git 확장 프로그램을 사용하여 파일의 VCS 기록을 보고 싶은 경우에 유용할 수 있습니다.
ReSharper를 별도의 프로세스로 이전하는 과정을 계속 진행하면서도, 가능한 성능과 관련한 특정 문제도 계속 해결하고 있습니다. 주요 개선 사항은 다음과 같습니다.
몇 가지 새로운 설정이 추가되었습니다.
new()
괄호 앞 및 괄호 내에 공백을 설정할지 여부를 선택할 수 있습니다. 사용자 지정 이름 지정 규칙의 경우, 적용되는 순서를 업데이트하여 보다 구체적인 규칙이 먼저 적용되도록 했습니다.
마지막으로, 서식 지정 선택에 새로운 액션을 추가했습니다. 이제 전체 서식을 지정하지 않고 선택한 코드의 들여쓰기만 조정하도록 ReSharper에 지시할 수 있습니다.
또한 일련의 버그를 수정했습니다. 자세한 내용은 이슈 트래커에서 확인할 수 있습니다.
EditorConfig는 .NET 커뮤니티에서 인기 도구로 자리잡고 있으며 ReSharper와의 작동 방식을 지속적으로 개선하고 있습니다. 변경된 사항은 다음과 같습니다.
csharp_indent_case_contents_when_block
옵션에 대한 지원을 추가했습니다. [InlineAutoData]
속성에 중복 인수가 없는지 확인하며, 테스트 클래스 또는 메서드에 [TestFixture]
또는 [Test]
속성이 없으면 경고합니다. ReSharper C++ 2021.1은 몇 가지 새로운 C++20 및 C++17 언어 기능을 지원합니다. 구체적으로, 비 유형 템플릿 매개변수의 클래스 유형, C++ 20 클래스 템플릿 인수 추론 규칙 및 함수 유형의 일부인 noexcept
가 있습니다. 기본 코드 완성 및 접미사 완성 템플릿으로 사용할 수 있는 코루틴에 대한 새로운 코드 완성 항목도 있습니다. co_await
, co_yield
및 co_return
.
구문 구성에 대해 선택한 코드 스타일을 적용하는 데 사용할 수 있는 구문 스타일 설정 모음을 도입했습니다. 검사, 빠른 수정 및 Apply Syntax Style(구문 스타일 적용)과 Cleanup selection(선택 범위 정리) 컨텍스트 액션의 지원으로 코드 베이스에 새 스타일을 쉽게 적용하고 새 코드를 일관되게 유지할 수 있습니다.
30일 무료 평가 이용 가능