재우니의 블로그

 

 

C# 지원

컬렉션에서 조회 수 줄이기

컬렉션의 조회 수를 줄여 다양한 유형의 컬렉션으로 작업할 때 이를 최적화하고 속도를 높이는 빠른 수정이 포함된 일련의 검사를 도입했습니다.

PreviousNext
  •  
  • HashSet 또는 ISet 인터페이스를 구현하는 다른 컬렉션에 항목을 추가하기 전에 Contains(item) 검사를 제거합니다.
  • Dictionary 또는 IDictionary 인터페이스를 구현하는 다른 컬렉션에 항목을 추가하기 전에 ContainsKey(key) 검사를 제거합니다.
PreviousNext
  •  
  • 가능한 경우 Dictionary 컬렉션 또는 Dictionary에서 상속된 컬렉션에 TryAdd(key, value)를 사용합니다.
  • 가능한 경우 IDictionary 컬렉션에 TryGetValue(key, out value)를 사용합니다.

Null 검사 패턴의 구문 스타일

새로운 Syntax style(구문 스타일) 설정을 제공하여 패턴 내에서 not null 검사의 일관된 스타일을 적용할 수 있도록 했습니다. 여기에는 빈 재귀 패턴 구문 { }와 부정 패턴 not null의 두 가지 옵션이 있으며 후자가 디폴트 값입니다. ReSharper | Options(옵션) | Code Editing(코드 편집) | C# | Syntax Style(구문 스타일) 페이지에서 언제든지 동작을 조정할 수 있습니다.

not null 패턴을 사용하면 재귀 패턴 { LastName: { } lastName }과 같이 확인된 값에 대해 변수 이름을 도입할 수 없기 때문에 단점이 있습니다. 동일한 값에 대한 모든 액세스를 통일하기 위해 not null 패턴에 Add pattern variable(패턴 변수 추가) 컨텍스트 액션을 추가하여 동일한 값에 액세스하는 표현식을 찾고(변수 이름이 도입됨) 이 모두를 새로 도입된 이름으로 대체하도록 했습니다.

ArgumentNullException.ThrowIfNull null 검사 스타일

.NET 6.0 SDK에 null 검사를 위한 새로운 API인 ArgumentNullException.ThrowIfNull이 도입되었습니다. 이후 코드 분석 엔진은 이 검사 접근 방식을 인식했지만 이 API를 ReSharper에서 생성한 null 검사의 디폴트 스타일로 사용할 수 있는 옵션이 없었습니다. 2023.1 릴리스에서는 ArgumentNullException.ThrowIfNull 패턴을 ReSharper | Options(옵션) | Code Editing(코드 편집) | C# | Null checking(Null 검사)에 추가했습니다.

공통 프로퍼티 패턴 추출

프로퍼티 패턴 일치를 많이 사용하는 경우, 빠른 수정이 포함된 검사를 사용해 보세요. 코드 흐름에 여러 프로퍼티 패턴이 함께 나타날 때 공통 요소를 추출할 수 있습니다. Extract common property pattern(공통 프로퍼티 패턴 추출) 빠른 수정으로 생성된 코드는 공통 프로퍼티 패턴을 더 높은 수준의 패턴으로 이동하여 코드 반복을 줄이는 데 도움을 줍니다.

빈 리전 제거

C# 개발자는 #region 지시문과 IDE의 코드 접기를 사용하여 코드를 구조화하는 경우가 많습니다. 리팩터링하면 일부 #region이 비어 있을 수 있으며, 이로 인해 접었을 때 코드를 잘못 오인할 소지가 있을 수 있습니다. 이 새로운 코드 검사를 통해 접힌 상태의 빈 #region을 식별하고 해당하는 빠른 수정으로 코드를 정리할 수 있습니다.

span.SequenceEqual(“str”) 대체

코드 분석에 span.SequenceEqual("stringLiteral")을 span is "stringLiteral"로 대체할 것을 제안하는 코드 검사가 제공됩니다. 함수를 호출하는 것보다 더 깔끔하고 편리한 C# 구문 솔루션입니다.

람다에 대한 반환 타입 사양 추가

C#의 람다 식은 타입이 묵시적으로 지정된 매개변수와 추론된 반환 타입을 가질 수 있습니다. 그러나 복잡한 오버로드 해결 상황에서 코드를 명확히 하기 위해 명시적 타입을 추가할 수 있습니다. C# 11부터 람다 식에 대한 반환 타입 사양을 추가하는 것도 가능합니다. 이를 위해 ReSharper 2023.1에 Insert return type specification(반환 타입 사양 추가) 컨텍스트 액션을 도입했습니다. 이 액션은 메서드, 클래스, 파일, 프로젝트 또는 전체 솔루션을 포함한 모든 범위에 적용할 수 있습니다.

Pattern is redundant(불필요한 패턴) 검사

C# or/and/not 패턴은 간단한 값 검사에 유용하지만 ||/&&/!와 같은 기존 표현식보다 인식하기 어려울 수 있습니다. 또한 소괄호가 빠진 경우에 찾기 어려운 버그를 만들어낼 수도 있습니다. 이를 돕기 위해 버전 2023.1에서는 복잡한 패턴 내의 '죽은(Dead)' 검사를 경고하는 새로운 코드 분석을 도입했습니다.

Convert to list pattern(목록 패턴으로 변환) 컨텍스트 액션

C# 11 목록 패턴에 대한 지원을 지속적으로 개선하고 있습니다. 새로운 Convert to list pattern(목록 패턴으로 변환) 컨텍스트 액션을 사용하면 컬렉션 길이 검사를 목록 패턴 구문으로 전환할 수 있습니다. 이 액션은 컬렉션 길이를 확인할 수 있는 모든 컨텍스트에서 작동합니다.

C++ 지원

매크로 대체 미리보기

매크로 위로 마우스를 가져가면 이제 툴팁에서 전체 구문 강조 표시 및 적절한 코드 서식 지정과 함께 매크로 확장을 볼 수 있습니다. 이전과 같이 Substitute macro call(매크로 호출 대체) 컨텍스트 액션을 사용하여 코드에서 바로 매크로 확장을 확인할 수 있지만 즉시 미리보기를 이용하면 매크로 작업이 더 쉬워집니다. 또한 Quick Documentation(빠른 문서) 팝업(Ctrl+Shift+F1)에서 대체 미리보기의 엔티티를 클릭하여 해당 문서를 확인할 수 있습니다.

호출 추적

Call tracking(호출 추적)이 마침내 ReSharper C++에 도입되었습니다! 이제 수신 호출의 계층 구조에서 호출 체인을 보고 탐색할 수 있습니다. 호출 추적 결과 창에서 계층 구조 항목을 두 번 클릭하여 에디터에서 해당 호출로 이동하거나 노드를 확장하여 수신 호출을 확인할 수 있습니다.

ReSharper C++ 2023.1의 새로운 기능

UX/UI 변경 사항

업데이트 대화상자

ReSharper 2023.1에는 최신 제공 빌드의 변경 사항에 대한 메모가 포함된 새로운 모습의 업데이트 대화상자가 도입되어 더 정확한 정보를 바탕으로 업데이트를 다운로드할지 건너뛸지 결정을 내릴 수 있습니다.

새 단축키 대화상자

버전 2023.1부터 ReSharper를 처음 실행할 때 사용할 단축키 구성을 선택할 수 있는 Keyboard Shortcuts(키보드 단축키) 화면이 표시됩니다.

코드 정리

Reformat inactive preprocessor branches in file(파일의 비활성 전처리기 브랜치 서식 다시 지정)은 ReSharper 2023.1에 도입되는 새로운 작업 유형입니다. 이 작업을 통해 비활성 전처리기 브랜치의 서식을 다시 지정할 수 있습니다. 단, 한 번에 전체 파일에만 적용할 수 있으며 C# 소스에서만 작동합니다.

항상 false인 전처리기 지시문 #if 뒤에 숨겨진 코드는 이 작업으로 서식을 다시 지정할 수 없습니다. 이 제한을 가장 잘 보여주는 두 가지 예로 #if false ... #endif  #define A #if !A ... #endif 구문을 들 수 있습니다.

유닛 테스트

Session(세션)  Explorer(탐색기) 도구 창 내의 유닛 테스트 트리에 적용된 텍스트 검색 필터가 이제 툴바의 Run(실행) 버튼을 사용하여 테스트를 실행할 때 고려됩니다. 검색 조건을 충족하는 노드만 목록에 남고 실행됩니다.

Rename(이름 변경) 리팩터링

ReSharper가 프로젝트에서 파일 이름 변경을 처리하는 방식을 개선했습니다. 이 빌드부터 솔루션 내에서 파일의 이름을 바꿀 때마다 변경 사항과 일치하도록 모든 관련 심볼(클래스, 인터페이스 등)의 이름을 바꾸기 위한 옵션이 있는 대화상자가 나타납니다.

macOS 및 Linux에서 dotTrace 지원 베타 dotUltimate

독립실행형 버전의 dotTrace를 이제 Linux 및 macOS에서 이용할 수 있게 되어, 해당 운영 체제에서 성능 스냅샷 수집 및 분석을 포함하여 전체 프로파일링 워크플로를 수행할 수 있습니다.

플러그인 마이그레이션

참조하는 API가 유효하고 변경되지 않는 한 ReSharper 플러그인은 이제 한 버전에서 다음 버전으로 자동 마이그레이션됩니다.

내장된 API 검증 도구는 설치된 플러그인의 바이너리 호환성을 확인하고 실행 가능한 플러그인을 마이그레이션합니다. 또한 플러그인 작성자는 플러그인에서 사용하는 API가 SDK에 더 이상 존재하지 않을 때마다 JetBrains Marketplace를 통해 자동 알림을 받습니다.

기타

CSS 지원을 기본적으로 비활성화

ReSharper에서 CSS에 대한 수요가 거의 없기 때문에 이 언어의 최신 버전을 우선적으로 지원하기가 점차 어려워지고 있습니다. 따라서 이 언어를 지원하는 더 나은 방법을 찾을 때까지 CSS 지원을 보류하기로 결정했습니다.

이에 ReSharper 2023.1부터 CSS 지원이 기본적으로 비활성화됩니다. 이 언어를 계속 사용하려면 ReSharper | Options(옵션) | Environment(환경) | Products & Features(제품 및 기능) | 'CSS' 체크박스에서 다시 활성화할 수 있습니다.

Visual Studio 2010 및 2012 개발 종료

ReSharper 및 .NET 도구는 현재 2010년부터 가장 최근인 2022년까지 7개의 주요 Visual Studio 버전을 지원합니다. 2023.1 릴리스부터 가장 오래된 두 버전인 Visual Studio 2010 및 Visual Studio 2012에 대한 지원을 중단하여 지원 버전 수를 줄입니다.

자세히 알아보기 →