ReSharper 2024.1에서는 코드를 컬렉션 표현식으로 변환할 수 있도록 더 많은 제안을 포함하고, foreach
루프 내에서 반복 처리가 진행되는 동안 컬렉션이 수정될 때 경고를 받을 수 있도록 C# 지원이 더욱 개선되었습니다. Razor 지원은 이제 @addTagHelper
및 @removeTagHelper
지시문에 대한 참조를 확인하고 사용자 지정 명명 규칙을 편집하기 위한 UX/UI가 크게 개선되었습니다.
30일 무료 평가 이용 가능
이제 소스 코드의 더 많은 코드 구성을 빈 배열이나 ImmutableArray
선언 및 초기화와 같은 C# 12의 컬렉션 표현식으로 변환할 수 있도록 제안 받게 됩니다.
Possible 'System.InvalidOperationException': Collection was modified'(잠재적 'System.InvalidOperationException: 컬렉션이 수정됨')라는 검사가 새롭게 추가되었습니다. 이 검사는 foreach
루프 내에서 반복 처리가 진행되는 동안 컬렉션이 수정되면 런타임에 예외가 발생할 수 있음을 경고합니다. 이 분석에서는 컬렉션 수정 후 루프가 종료되는 경우를 인식하며 이러한 경우에는 경고가 발생하지 않습니다.
이 검사에는 문제를 즉시 해결하는 데 도움이 되는 적절한 빠른 수정이 함께 제공됩니다.
Generate(생성) | Formatting Members(서식 지정 멤버)를 사용하면 상용구 코드를 생성하여 ToString()
메서드를 재정의하고 타입에 의미 있는 문자열을 반환할 수 있습니다. 2024.1 버전부터 이 기능은 ISpanFormattable
, IUtf8SpanFormattable
, IFormattable
과 같은 더 많은 타입을 지원합니다.
[MustDisposeResource]
어노테이션 개선: 이제 C# 코드 분석을 통해 Task<IDisposable>
및 ValueTask<IDisposable>
에 래핑된 리소스를 포함하여 async 메서드에서 반환된 리소스가 올바르게 폐기되도록 하여 작업 자체가 의도치 않게 폐기되는 것을 방지할 수 있습니다. .ConfigureAwait(...)
, .AsTask()
또는 .Result
를 통해 검색된 리소스도 포함하도록 보장합니다. Change Signature(시그니처 변경) 리팩터링에 다음과 같이 몇 가지 개선 사항이 도입되었습니다.
List<>
에 대한 타입을 지정해야 할 때 코드 완성을 사용하면 int
와 같이 필요한 타입을 쉽게 선택할 수 있습니다. System.Collections.Generic.List<System.Int16>
타입을 지정하면 결과 코드에서 타입이 자동으로 List<short>
로 단축됩니다. in
및 ref readonly
제어자와 record
타입을 포함하여 더 많은 최신 버전의 C# 기능을 지원합니다. 이번 릴리스에서는 Make Static(static으로 만들기) 리팩터링이 기본 생성자의 매개변수를 지원합니다. 이러한 매개변수는 Introduce parameters(매개변수 삽입) 목록에 표시되며 쉽게 구별할 수 있도록 별도의 아이콘이 있습니다. 이 리팩터링은 지역 함수에도 사용할 수 있습니다.
코드 분석에서 이제 protobuf-net
라이브러리의 ProtoContract
속성 및 ImplicitFields 열거형이 지원됩니다. 이 두 가지 모두 묵시적으로 직렬화에 사용되는 멤버를 표시하는 데 사용할 수 있습니다. 결과적으로, 해당 멤버에 더 이상 unused members(사용되지 않는 멤버) 경고 플래그가 지정되지 않습니다.
@addTagHelper
및 @removeTagHelper
지시문에 대한 참조 해결 ReSharper는 이제 Razor 뷰의 @addTagHelper
및 @removeTagHelper
지시문 내에 지정된 어셈블리 이름의 참조를 해결합니다. 따라서 이제 코드 완성, 사용 위치 찾기, 편리한 코드 탐색 등의 이점을 누릴 수 있습니다.
이제 ReSharper는 해결되지 않은 어셈블리 이름을 오류로 간주하고, 쉽게 알아볼 수 있게 이를 빨간색으로 강조 표시합니다.
C++ 지원에서 주목할 만한 개선 사항은 다음과 같습니다.
C++ 업데이트에 대해 자세히 알아보세요: ReSharper C++ 2024.1의 새로운 기능.
솔루션 전체 분석에서 높은 리소스 사용률 모드를 개선하여 CPU 병렬 처리의 효율을 더욱 높임으로써 분석 시간을 크게 줄이려고 노력하고 있습니다. 가비지 컬렉션에 소요되는 시간을 최소화하기 위해 코드 분석 활동의 메모리 할당 프로파일을 개선했습니다. 개선 작업이 진행되는 동안 이 모드를 사용해 보고 어떻게 느끼셨는지 알려주시면 감사하겠습니다.
이제 코드에서 요소 이름을 더 빠르고 효율적으로 바꿀 수 있습니다. 이러한 변경은 ReSharper의 다른 핵심 구성 요소에도 영향을 미쳐 Find Usages(사용 위치 찾기)를 포함한 여러 기능의 성능도 향상됩니다.
대규모 클래스를 처리하기 위해 static 멤버에 대한 Move to Another Type(다른 타입으로 이동) 리팩터링 성능이 크게 향상되었습니다.
ReSharper의 2024.1에는 새로운 Assembly Diff(어셈블리 Diff) 도구 창이 도입되었으며, 이와 함께 몇 가지가 변경되었습니다.
.zip
아카이브를 비교하는 기능이 Assembly Explorer(어셈블리 탐색기)에서 Assembly Diff 도구 창으로 이동되었습니다. ReSharper 내의 디컴파일러에서 이제 WebAssemblies용 WebCIL 패키징 형식을 지원합니다. 지원 내용은 다음과 같습니다.
.wasm
파일 확인 MAUI 및 .NET macOS 애플리케이션 프로젝트에 대한 지원을 이제 Visual Studio 내의 dotTrace, dotMemory 및 dotCover에서도 사용할 수 있습니다.
지원되는 대상 프레임워크:
net8.0-windows
, net7.0-windows
net8.0-maccatalyst
, net7.0-maccatalyst
net8.0-macos
, net7.0-macos
프로파일링 모드의 사용 가능 여부와 제한 사항에 대한 자세한 내용을 보려면 여기를 클릭하세요.
MAUI 프로젝트에 대한 지원은 독립 실행형 버전의 .NET 도구에서도 지원됩니다.
2024.1 릴리스부터 InspectCode의 디폴트 출력 형식은 SARIF이며, XML 형식은 곧 중단될 예정입니다. -f="xml"
매개변수를 사용하면 현재 버전에서도 XML 형식을 사용할 수 있습니다.
텍스트 제어의 내부 리팩터링을 완료했습니다. ReSharper를 Visual Studio 프로세스와 분리하여 실행하려는 노력외에도, 이 리팩터링은 ReSharper와 Rider 모두에 대한 에디터 성능에서 입력 및 관련 측면을 개선하도록 설계되었습니다. 여기에서 ReSharper를 Visual Studio 프로세스와 분리하기 위한 작업의 진행 상황을 확인할 수 있습니다.
JetBrains Marketplace 플러그인 피드에 호환성 검사를 기반으로 하는 새로운 필터링 메커니즘이 채택되었습니다. 이에 따라 호환되지 않는 플러그인은 더 이상 ReSharper의 확장 프로그램 관리자에 표시되지 않습니다.
30일 무료 평가 이용 가능