GoLand 2019.3의 새로운 기능

GoLand 2019.3에서는 CPU 소비가 감소하고 성능이 빨라졌으며 Go 모듈 지원이 강화되고 새로운 빠른 수정 모음이 추가되고 리팩터링 기능이 향상되었습니다. 또 Evaluate Expression(표현식 평가)을 통해 포함된 필드의 메서드를 호출하고 Mozilla rr을 사용하여 원격으로 애플리케이션을 디버그할 수 있습니다.

모든 새 프로젝트에 대해 Global File Watcher(전역 파일 와처)를 활성화하고 MongoDB로 작업하는 등 다양한 기능을 이용해 보세요.

성능

다양한 운영체제에서 GoLand 2019.3의 시작 시간을 측정한 차트

올 여름 GoLand 2019.2를 출시한 이후, JetBrains는 GoLand의 성능을 높이고 CPU 소비를 줄이기 위해 열심히 작업해 왔습니다. 주요 성능 개선 사항 중 하나는 IDE가 백그라운드에서 모든 것을 준비하고 시작 화면을 표시하고 프로젝트의 색인을 생성하는 데 걸리는 시작 시간을 줄이는 것입니다.

결과는 작업 중인 프로젝트의 크기와 사용 중인 기기의 연식, RAM, 디스크 공간에 따라 달라질 수 있습니다. 이 개선 작업은 앞으로도 계속 진행될 예정이므로 향후 릴리스에서 더 빠른 시작 시간을 기대하실 수 있습니다.

Go 모듈 개선 사항

go.mod 파일에서 Project 뷰로 이동

GoLand 2019.3은 go.mod 파일에 구문 강조 및 탐색 기능을 제공합니다. 특정 종속성의 가져오기 경로에서 macOS의 경우 ⌘+B를 누르고 Windows/Linux의 경우 Ctrl+B를 누르면 Project View(프로젝트 뷰)에서 해당 소스로 이동할 수 있습니다.

또한 Project View에서 Go 모듈은 그저 마지막 세그먼트가 아닌 전체 가져오기 경로와 함께 표시됩니다. 또한 각 Go 모듈의 버전은 가져오기 경로보다 어두운 글꼴 색상으로 표시되므로 쉽게 구분할 수 있습니다.

디버거 업데이트

호출 결과가 표시된 Evaluate Expression 대화상자

포함된 필드의 메서드 호출

디버거에서 Evaluate Expression(표현식 평가)을 사용하면 임베디드된 필드의 메서드를 바로 호출할 수 있습니다.

Mozilla rr로 디버그

Mozilla rr로 원격 디버그

Linux 및 Mozilla rr에서 실행되는 Go로 작성된 많은 프로덕션 서비스는 재현하기 어려운 버그를 조사하는 데 도움이 될 수 있습니다. Mozilla rr 디버그 기능은 GoLand 2018.3부터 지원되었지만 Linux가 실행되는 개발자 시스템에서만 작동했습니다. 이제 Linux 시스템에서 디버그 서버를 시작하고 macOS 및 Windows에서 원격으로 추적을 디버그할 수 있습니다. 이 작업을 수행하려면 다음 단계를 따르세요.

  • 원격 시스템에서 rr 추적을 수집합니다.
  • 다음과 같이 원격 시스템에서 디버거를 시작합니다. dlv --headless --api-version 2 -l localhost:2345 replay /path/to/trace/dir /path/to/binary
  • Go Remote 구성을 통해 원격 시스템에 연결합니다.

단, Mozilla rr은 Linux 시스템에서만 사용 가능합니다.

새로운 빠른 수정 기능

Alt+Enter를 눌러 표현식에서 사용되지 않는 매개변수 이름 삭제

사용되지 않는 매개변수 처리

사용되지 않는 매개변수에서 해당 매개변수의 이름과 타입을 모두 삭제할 수 있는 경우 GoLand는 두 가지를 모두 강조 표시하고, 타입이 메서드 사양을 구현하는 데 사용되는 경우에는 이름만 강조 표시합니다.

후자의 경우, 선택 가능한 두 가지 빠른 수정 옵션으로 Delete parameter names(매개변수 이름 삭제)Rename to_(다음으로 이름 변경)가 제공됩니다. 함수 유형으로 사용되는 함수에도 동일한 동작이 제공됩니다.

또한 사용되지 않는 모든 매개변수를 한 번에 삭제할 수 있습니다. Alt+Enter를 누르고 Delete all unused parameters(사용되지 않는 모든 매개변수 삭제) 빠른 수정을 사용하세요.

누락된 함수 생성

누락된 메서드 또는 함수 생성

GoLand는 함수 유형에 사용되는 함수 또는 메서드가 누락된 경우 이를 생성하기 위한 빠른 수정을 제공합니다. 간단히 Alt+Enter를 누르고 Create method/function(메서드/함수 생성)을 선택하기만 하면 됩니다.

GoLand가 패키지 가져오기를 제안

향상된 패키지 별칭 처리

이제 GoLand에서 Alt+Enter를 누르면 프로젝트 내 어떤 파일에서든 패키지가 사용된 별칭에 따라 패키지 가져오기가 제안됩니다.

리팩터링

매개변수 유형이 Parameters 및 Result Parameters 탭에 표시됨

시그너처 변경

이제 Change Signature(시그너처 변경)에서 Parameters(매개변수)Result parameters(결과 매개변수) 탭에 매개변수 유형이 항상 표시됩니다. 새로운 Reuse types(타입 재사용) 체크박스를 선택하면 Signature Preview(시그니처 미리보기) 및 결과에서 결과 타입을 축소할 수 있습니다.

또한 매개변수 정의를 단일 선언으로 병합하는 Reuse signature types(시그니처 타입 재사용)Alt+Enter를 눌러 각 매개변수에 유형을 추가하는 Expand signature types(시그니처 타입 확장)라는 두 가지 인텐션 액션이 새로 추가되었습니다.

유형 표현식 오류에 대해 Extract Variable에서 err 제안

변수 추출 및 이름 변경

Extract Variable(변수 추출)Rename(이름 변경)에서 더 알맞은 이름을 제안합니다. 예를 들어 유형 오류 표현식에는 err을 제안하고 context.Context에는 ctx를 제안합니다.

향상된 코드 검사 동작

2019.2 및 2019.3 버전 간 코드 검사 동작 비교

이제 GoLand의 코드 검사가 검사 대상에 더 초점을 맞춥니다. Alt+Enter를 눌러 컨텍스트 메뉴를 호출할 때 특정 코드에 가장 적절한 빠른 수정 및 인텐션 액션이 표시되도록 코드 에디터에서 탐지된 문제가 강조 표시되는 범위를 줄였습니다.

코드 편집

룬 리터럴에 대한 오류 메시지 예시

향상된 rune 리터럴 렉서

rune 리터럴 렉서가 여러 면에서 개선되었습니다.

  • GoLand가 더 명확하고 간결한 오류 메시지를 통해 표현식이 잘못된 이유를 설명합니다.
  • GoLand가 편집 후 유효한 rune 리터럴을 오류로 강조 표시하지 않습니다.
  • 유효하지 않은 rune 리터럴이 더 안정적으로 파싱됩니다.
GoLand는 선언의 왼쪽에 있는 재대입을 강조 표시

재할당된 부분 강조 표시

Go에서는 짧은 var 선언의 왼쪽에 기존 변수를 사용할 수 있습니다. 따라서 동일해 보이는 2개의 구문이 서로 다른 의미를 가지는 경우가 있습니다. 이를 쉽게 구분할 수 있도록 재할당된 부분에 대한 구문 강조 표시를 추가했습니다.

복합 리터럴에서 코드 접기 예시

복합 리터럴에서 코드 접기

GoLand 2019.3은 복합 리터럴에서 코드 접기를 제공합니다. 코드 조각을 접거나 확장하려면 코드 접기 토글을 사용하거나 Windows에서 Ctrl+NumPad Minus/Ctrl+NumPad Plus를 누르거나 macOS에서 ⌘+NumPad Minus/⌘+NumPad Plus를 누르세요. 기본 코드 접기 동작을 구성하려면 Settings(설정)/Preferences(환경 설정) | Editor(에디터) | General(일반) | Code Folding(코드 접기)로 이동하세요.

향상된 라이브 템플릿

라이브 템플릿은 줄을 값으로 제안

forforr 라이브 템플릿에서 이제 적절한 변수 이름을 제안합니다. 예를 들어 색인에는 iindex와 같은 이름이 제안되고 값에는 s, stringline이 제안됩니다.

라이브 템플릿 meth에서는 리시버 이름에 대한 코드 제안을 제공합니다.

탐색

선택 영역에서만 검색

선택 영역에서만 검색

Find(검색)를 사용할 때 선택 영역에서만 검색할 수 있습니다(macOS에서는 ⌘+F, Windows/Linux에서는 Ctrl+F). 간단히 에디터에서 필요한 코드를 선택하고 Find를 호출하면 IDE가 선택한 영역에서만 검색합니다. 전체 파일 내 검색으로 간편하게 전환하려면 ⌘+F/Ctrl+F를 두 번 누르거나 표시줄에서 In Selection(선택 영역 내) 옵션을 전환하세요.

파일 마스크 옵션을 활성화하여 'Find in Path'로 검색

파일 마스크 옵션으로 '경로에서 검색' 사용

파일 마스크를 사용해 Find in Path(경로에서 검색) 대화상자에서 검색하면 GoLand가 그에 따라 검색 결과에서 파일 확장자를 표시합니다. 이렇게 하면 이름은 같지만 파일 확장자가 다른 파일을 더 쉽게 구별할 수 있습니다.

모든 새 프로젝트에 전역 파일 와처 사용

모든 새 프로젝트에 golangci-lint 사용

GoLand 2018.2에는 Project(프로젝트)Global(전역) 옵션을 사용하여 다른 프로젝트 간에 파일 와처 구성을 공유할 수 있는 옵션인 Global File Watcher(전역 파일 와처)가 추가되었습니다.

그러나 이 와처를 사용하려면 새 프로젝트마다 활성화해야 했습니다. 이제 생성하거나 열려 있는 모든 새 프로젝트에서 기본적으로 이 와처를 사용하도록 설정할 수 있습니다.

File(파일) 메뉴에서 Other Settings(기타 설정) | Settings for new projects(새 프로젝트 설정)를 선택하고 Tools(도구) | File Watchers(파일 와처)로 이동해 새로운 전역 와처를 추가한 다음, 그 옆에 있는 체크박스를 선택하여 모든 새 프로젝트에서 활성화하세요.

튜토리얼

Extract Variable 리팩터링의 새 기능 연습

프로젝트를 완료하고 마감일을 앞두고 있는 상황에서 사용하는 제품에 대한 새로운 기능 페이지, 릴리스 노트, 블로그 게시물을 읽을 시간이 부족한 경우가 종종 있습니다. 그래서 JetBrains에서는 시간이 있을 때 GoLand 기능을 배울 수 있는 Tutorials(튜토리얼)을 추가했습니다.

Tutorials는 프로젝트 목록 상단의 시작 화면에서 찾을 수 있습니다. IDE를 새 버전으로 업그레이드하면 새 릴리스의 기능을 다루는 레슨이 생깁니다. 또는 모든 프로젝트에서 해당 도구 창을 통해 Tutorials에 액세스할 수 있습니다.

기타 변경 내용

Hierarchy 도구 창에서 호출자 및 피호출자 간 전환

계층 구조 도구 창

Hierarchy(계층 구조) 도구 창에서 피호출자의 메서드 계층 구조를 분석할 수 있는 새로운 옵션이 생겼습니다. 선택한 메서드의 호출자와 피호출자 사이를 전환할 수 있는 2개의 전용 버튼이 추가되었으며 메뉴에서 특수 버튼을 클릭하면 트리 내 요소를 알파벳 순으로 정렬할 수 있습니다. Tool Windows(도구 창) 목록에서 Hierarchy 도구 창을 보려면 먼저 계층 구조를 빌드한 다음, Navigate(탐색) | Call Hierarchy or Navigate(호출 계층 구조 또는 탐색) | Type Hierarchy(타입 계층 구조)로 이동하세요.

IDE를 다시 시작하지 않고 테마 플러그인 전환

테마 및 단축키 플러그인을 빠르게 전환

GoLand 2019.3에서는 IDE를 다시 시작하지 않아도 테마 플러그인과 단축키 플러그인을 설치 및 제거할 수 있습니다.

‘Focus Editor’ 액션 설정에서 ‘Add Keyboard Shortcut’ 선택

에디터로 초점을 돌려주는 사용자 지정 단축키

에디터로 초점을 돌리기 위해 ESC를 사용하는 대신 사용자 지정 단축키를 설정할 수 있습니다. Preferences(환경 설정)/Settings(설정) | Keymap(단축키)에서 Focus Editor(에디터에 초점 두기) 액션을 찾은 다음, 오른쪽 마우스 버튼을 클릭한 후 드롭다운에서 Add Keyboard Shortcut(키보드 단축키 추가)을 선택합니다.

에디터에서 스크롤바의 가시성 개선

스크롤바의 가시성 개선

스크롤바가 더 눈에 띄도록 설정하는 옵션이 추가되었습니다. 이 옵션을 사용하려면 Preferences(환경 설정)/Settings(설정) | Appearance & Behavior(모양 및 동작) | Appearance(모양)에서 Use contrast scrollbars(명암대비 스크롤바 사용) 체크박스를 선택하세요.

버전 관리 개선 사항

저장소 목록이 나오는 새로운 Clone 대화상자

재설계된 복제 대화상자

Clone(복제) 대화상자는 VCS | Get from Version control(버전 관리에서 가져오기)에 있습니다. 이제 이 대화상자에서 로그인할 수 있으며, 이미 로그인한 경우 계정 또는 조직별로 그룹화된 모든 저장소 목록이 IDE에서 즉시 미리보기로 표시됩니다.

‘Show Details’를 확인하면 충돌하는 변경 내용이 표시된 창이 열림

병합 충돌에 대한 더 많은 정보 제공

이제 병합, 리베이스 또는 체리픽 작업 중에 발생한 충돌을 더 간편하게 조사할 수 있습니다. Show Details(세부 정보 표시) 링크를 클릭하면 결과 코드 상태의 원인이 된 커밋 목록이 표시되고, 변경 소스에 대한 자세한 정보는 Merge(병합) 대화상자에서 확인할 수 있습니다.

데이터베이스 업데이트

데이터베이스 탐색기에서 컬렉션 및 필드 확인

MongoDB 지원

GoLand 2019.3에서는 MongoDB에 대한 기본 지원이 제공되어 이제 다음을 수행할 수 있습니다.

  • 데이터베이스 탐색기에서 컬렉션 및 필드를 확인할 수 있습니다.
  • 컬렉션을 열거나 쿼리 결과를 확인할 수 있습니다. 열을 기준으로 정렬하거나 값을 필터링할 수도 있습니다.
  • 쿼리를 실행하고 결과를 얻을 수 있습니다. 구문을 선택하고 Ctrl/⌘+Enter를 누르거나 도구 모음의 Play(실행) 단추를 사용하여 실행하세요.
연결 오류 예시

연결 오류 검색

이제 연결 오류를 쉽게 검색할 수 있습니다. 연결이 실패하면 IDE에서 전용 버튼을 간단히 클릭하여 Google 검색 엔진을 통한 오류 검색 결과로 이동할 수 있습니다.

웹 개발

CSS 라이브러리의 클래스 이름에 대한 코드 완성

CDN상의 CSS 라이브러리에 코드 완성 지원

Bootstrap이나 다른 CSS 라이브러리를 사용하고 해당 라이브러리가 HTML 파일 내에서 CDN에 연결된 경우 이제 클래스 소스를 프로젝트에 추가하지 않아도 해당 라이브러리의 클래스 이름에 코드 완성 기능을 사용할 수 있습니다.

새 변수에 대한 코드 제안

새 심볼의 이름 제안

JavaScript 또는 TypeScript에서 새 변수 및 매개변수 이름을 추가하면 프로젝트, 표준 라이브러리, 사용 중인 종속성에 정의된 클래스, 인터페이스, 유형 별칭의 이름을 기반으로 이름이 제안됩니다.

새로운 변수, 함수, 클래스, 인터페이스의 경우 동일한 범위에서 이미 사용되었지만 아직 정의되지 않은 이름에 대한 제안도 제공됩니다.