빠른 수정

ReSharper는 C#, VB.NET, XAML, ASP.NET 및 기타 지원되는 언어에서 탐지된 대부분의 코드 문제를 즉시 수정할 수 있는 1,200여 가지의 빠른 수정을 제공합니다. 빠른 수정을 적용하려면 강조 표시된 코드 문제에서 그저 Alt+Enter를 누르고, 가장 좋은 문제 수정 방법 또는 코드 개선 방법을 선택하면 됩니다.

ReSharper에서 코드 문제 빠른 수정

빠른 수정 적용

빠른 수정은 대부분 빨간색 전구(오류) 또는 노란색 전구(경고, 제안 및 힌트)로 표현되며, 이러한 전구는 강조 표시된 코드 위에 캐럿을 올려놓을 때 강조 표시된 코드 줄의 왼쪽에 표시됩니다. 전구를 클릭하거나 Alt+Enter을 누르면, 주어진 오류에 사용 가능한 빠른 수정 목록을 확인할 수 있습니다. 그런 다음 간단히 목록에서 적절한 빠른 수정을 선택하면 가장 편리한 방식으로 문제가 해결됩니다.

더 넓은 범위(파일, 프로젝트 또는 솔루션)에서 ReSharper의 빠른 수정 적용

범위에서 수정

일부 빠른 수정(예: Remove unused directives(사용되지 않은 지시문 제거), Make field read-only(필드를 읽기 전용으로 설정), Remove redundant cast(중복 형 변환 제거) 등)은 더 넓은 범위(현재 메서드, 클래스, 파일, 현재 프로젝트 또는 전체 솔루션)에서 자동으로 문제를 찾아 수정할 수 있습니다.

이러한 수정 내용은 해당 항목 옆에 표시된 작은 화살표에서 확인할 수 있습니다. 이 화살표를 클릭하거나 키보드에서 오른쪽 방향키를 눌러 수정 내용을 적용할 위치를 선택하세요.

해결되지 않은 심볼을 처리하는 ReSharper의 빠른 수정

해결되지 않은 심볼 수정

해결되지 않은 심볼로 발생한 오류에 대해 ReSharper는 다양한 빠른 수정 방법을 제공하며, 예를 들면 다음과 같은 것이 있습니다.

  • 심볼이 솔루션에서 참조된 일부 네임스페이스에 존재하는 경우 ReSharper는 파일에서 누락된 모든 네임스페이스를 가져오는 방법을 제안하는 팝업을 표시합니다.
  • 일련의 생성 작업을 도와주는 빠른 수정을 이용하면 사용 위치의 컨텍스트에 따라 심볼의 다양한 선언을 빠르게 생성할 수 있습니다.
  • 문제를 수정하는 또 다른 방법은 Find this type on nuget.org...(nuget.org에서 이 유형 검색...)를 사용하는 것입니다. 그러면 NuGet Browser(NuGet 브라우저)가 나타나고, 여기에서 누락된 NuGet 패키지를 찾아 설치할 수 있습니다.
ReSharper에서 코드 문제 빠른 수정

양방향 빠른 수정

코드에 새로운 심볼을 만드는 빠른 수정은 종종 양방향으로 이루어집니다. 예를 들어, 이 예시에서는 ReSharper가 List<> 변수 앞에 열거형 객체를 강제로 적용하여 여러 IEnumerable 열거형 객체의 수정을 돕습니다.

ReSharper가 빨간색 프레임으로 필수 입력 필드를 강조 표시하면 제안된 값을 수락하거나 값을 수정한 다음, Tab 또는 Enter 키를 눌러 다음 입력 위치로 이동하거나 Shift+Tab을 눌러 이전 입력 위치로 이동할 수 있습니다. 마지막 입력 필드가 완성되면 캐럿이 일반 모드로 돌아갑니다.

ReSharper의 빠른 수정 및 컨텍스트 액션

빠른 수정 vs 컨텍스트 액션

또한 ReSharper는 빠른 수정과 함께 드롭다운 목록에 표시되는 컨텍스트 액션을 제공합니다.

이 두 기능의 차이는 간단합니다. 빠른 수정은 코드를 수정하여 개선하려는 목적으로 강조 표시된 코드 문제가 있을 때만 표시되는 반면, 컨텍스트 액션은 Alt+Enter를 눌러 드롭다운 메뉴에서 항상 이용할 수 있는 작은 규모의 리팩터링을 보여줍니다.

검색 패턴과 일치하는 코드 강조 표시 및 교체 패턴으로 바꾸기

사용자 지정 빠른 수정

ReSharper는 특정 패턴과 일치하는 코드를 찾고 선택적으로 다른 패턴과 일치하는 코드로 바꿀 수 있는 Structural Search and Replace(구조 검색 및 바꾸기) 기능을 제공합니다. 더욱 멋진 기능은 ReSharper에서는 검색 패턴에 대한 솔루션을 연속해서 모니터링하고, 일치하는 코드를 강조 표시하며, 교체 패턴에 따라 코드를 바꿀 수 있는 빠른 수정 기능을 제공할 수 있습니다.

ReSharper에서 코드 문제 빠른 수정

C#: 문자열 보간 사용 예시

수년 동안 복합 서식 지정을 지원하는 String.Format 및 기타 메서드는 문자열 리터럴에 C# 변숫값을 포함시키기 위한 유일한 방법이었습니다. C# 6.0부터는 문자열 보간을 사용해 훨씬 더 가독성 높은 방식으로 이 작업을 수행할 수 있습니다. ReSharper의 빠른 수정을 이용하면 몇 번의 키 입력만으로 복합 서식 지정을 문자열 보간으로 대체할 수 있습니다.

ReSharper에서 코드 문제 빠른 수정

C#: 잠재적인 NullReferenceException 수정 예시

ReSharper가 런타임에서 System.NullReferenceException을 초래하는 잠재적인 null 객체에서 메서드 호출을 탐지한 경우, 2가지 빠른 수정을 제안합니다. 기존의 수정 방법은 호출 앞에 null 검사 루틴을 추가하는 것입니다. 그러나 이 호출을 처리하는 더 간단명료한 방법은 이러한 시나리오를 해결하기 위해 C# 6.0에 도입된 null 조건 연산자인 .?를 사용하는 것입니다.

ReSharper에서 코드 문제 빠른 수정

C#: foreach를 LINQ 표현식으로 변환 예시

C#의 LINQ 구문을 선호하는 경우, ReSharper에서 기존 코드 베이스를 확인하여 LINQ 표현식으로 변환할 수 있는 루프를 찾고, 빠른 수정을 사용해 변환을 빠르고 안전하게 수행할 수 있습니다.

ReSharper에서 코드 문제 빠른 수정

C#: 중복 배열 생성 제거 예시

C# 메서드가 params 키워드를 가진 다양한 인수를 사용할 경우, 해당 인수의 배열이 컴파일러에서 생성되므로 메서드 호출에서 인수의 배열을 직접 생성할 필요가 없습니다.

뿐만 아니라, ReSharper는 원하는 범위에서 모든 중복 코드(중복 한정자, 인수, 형 변환, 조건 검사, 사용되지 않은 할당, 도달할 수 없는 코드 등)를 제거하는 빠른 수정을 제안합니다.

ReSharper에서 코드 문제 빠른 수정

C#: 선택적 매개변수 삽입 예시

오버로드된 함수의 유일한 목적이 일부 인수의 기본값으로 '구현' 함수를 호출하는 것일 경우, ReSharper가 이 오버로드를 제거하고 '구현' 함수에서 선택적 매개변수를 사용하도록 도와줍니다.

ReSharper에서 코드 문제 빠른 수정

C#: foreach 루프 내에서 명시적 형 변환 사용 예시

설계된 대로, foreach는 파생 유형에 숨겨진 형 변환을 허용합니다. 이 숨겨진 형 변환은 사용하기는 간편하지만 런타임에서 System.InvalidCastException을 발생시킬 수 있습니다. 이때 ReSharper가 제안하는 빠른 수정을 통해 형 변환을 명시적으로 설정할 수 있습니다. 여전히 안전하지는 않지만, 최소한 숨겨져 있지는 않게 됩니다.

ReSharper에서 코드 문제 빠른 수정

VB.NET: 문자열 비교 지정 예시

수많은 빠른 수정 기능이 여러 언어에서 작동합니다. C# 및 VB.NET 모두에서 사용 가능한 빠른 수정의 예시는 다음과 같습니다. 두 문자열을 정확히 비교하는 방법을 명확히 하기 위해 ReSharper는 상등 연산자 비교를 String.Equals()로 대체할 것을 제안하여 대소문자를 구별하고 문화에 따라 비교가 수행되도록 합니다.

ReSharper에서 코드 문제 빠른 수정

TypeScript: 유형 가드 추가 예시

TypeScript 공용체 유형은 사용하기 까다로운 경우가 있습니다. 예를 들어, 공용체 유형값의 모든 유형에 공통되지 않은 멤버를 사용할 경우 컴파일러 오류가 발생합니다. 이 경우, ReSharper는 그러한 멤버의 차이를 명시하기 위해 서로 다른 유형 가드를 추가하는 빠른 수정을 다양하게 제안합니다.

ReSharper에서 코드 문제 빠른 수정

JSON: 누락된 필수 프로퍼티 추가 예시

JSON 파일에서 ReSharper는 연결된 JSON 스키마의 모든 필수 속성에 대한 정보를 활용해 누락된 필수 속성에 대한 빠른 수정을 제안합니다.

ReSharper에서 코드 문제 빠른 수정

CSS: 알파 구성 요소 제거 예시

CSS Level 3 이하에서는 16진수 색상 표기에서 알파 채널을 허용하지 않습니다. 따라서 ReSharper는 16진수 색상 표기를 RGBA 또는 HSAL 색상 표기로 대체하거나 알파 채널 값을 제거하도록 제안합니다.