IntelliJ IDEA 2019.1의 새로운 기능

테마

테마 사용자 지정

즐거운 소식을 전해 드립니다. IntelliJ IDEA 2019.1에서 사용자 지정 테마가 공식적으로 지원됩니다. 이제 자신만의 테마를 간편하게 만들 수 있습니다. 자세히 알아보기

사용자가 바로 사용해 볼 수 있는 새로운 테마도 몇 가지 준비했습니다. 지금 이 새로운 테마 중 하나를 다운로드한 후 Appearance(모양) 설정에서 기본 테마로 선택하여 IDE를 더욱 다채롭게 꾸며 보세요. 자세히 알아보기

Java

Java 12 switch 식(테스트 버전) 지원

IntelliJ IDEA 2019.1에서 Java 12의 테스트 버전 기능(JEP 325에 따른 switch 식)을 지원합니다.

처음 사용하는 경우 다양한 새로운 검사 및 빠른 수정 기능이 지원되어 수월하게 시작할 수 있습니다. IntelliJ IDEA는 향상된 'switch' 문 또는 표현식으로 대체할 수 있는 'switch' 문을 탐지하여 변환을 위한 빠른 수정을 제공합니다. 또한 중복 브랜치도 탐지하여 병합을 위한 빠른 수정을 제공합니다. 더욱 놀라운 사실은 지금 소개한 기능이 빙산의 일각이라는 것입니다.

자세히 알아보기

변수 추출 리팩터링 기능 개선

'Extract Variable'(변수 추출) 리팩터링이 크게 개선되어 시맨틱이 예전보다 훨씬 더 안전하게 보존됩니다. IntelliJ IDEA는 필드 이니셜라이저에서도 변수를 추출할 수 있고, 조건이 중요한 경우 Extract Variable 리팩터링에서 ternary를 'if' 문으로 자동 변환할 수 있습니다. 조건이 중요하게 고려되는 경우는 조건에 null 검사 또는 'instanceof' 검사가 있을 경우입니다.

ternary 식에 정확한 경고 강조 표시 지원

IntelliJ IDEA 2019.1에서는 ternary 식에 대한 경고 강조 표시가 더욱 정확해졌습니다. 이전에는 null 값 가능성이 단 하나의 브랜치에서 발견되어도 전체 ternary 식이 강조 표시되었으나 이제 null 값 가능성이 탐지된 조건만 강조 표시됩니다.

이 새로운 기능 덕분에 switch 식의 강조 표시도 더 정확해졌습니다.

향상된 수학 연산 분석

데이터 흐름 분석 기능은 수학 연산 결과를 추적하여 이 정보를 기반으로 항상 true 또는 false인 조건을 경고합니다. JetBrains는 곱셈, 나머지, 비트 연산 등 다양한 수학 연산의 분석 기능을 향상하였습니다.

소스에서 생성자의 순수성 추론

IntelliJ IDEA 2019.1에서는 @Contract annotations 지원이 향상되었습니다. 이제 소스에서 생성자의 순수성이 자동으로 추론됩니다.

Java 스택 추적에서 줄 내의 관련 위치로 이동

이제 Java 스택 추적을 클릭하면 IntelliJ IDEA가 행 내에서 정확한 위치를 파악하여 그곳으로 커서를 이동합니다. 이전에는 해당 행의 첫 번째 열로만 이동했습니다.

중복 switch 브랜치 탐지

IntelliJ IDEA가 중복 switch 브랜치를 탐지하여 해당 브랜치를 병합할 수 있도록 빠른 수정을 제공합니다.

Gradle

각 Gradle 프로젝트의 빌드 및 실행 액션을 Gradle 설정에 위임

이제 각 프로젝트의 빌드 및 실행 액션을 Gradle에 개별적으로 위임할 수 있습니다. IntelliJ IDEA 프로젝트가 몇 개의 Gradle 프로젝트로 구성된 경우 각 Gradle 프로젝트에서 이 옵션을 구성하세요. 동일한 프로젝트의 테스트 러너 및 애플리케이션 러너에도 서로 다른 값을 설정할 수 있습니다.

IntelliJ IDEA 2019.1에서는 새 Gradle 프로젝트의 빌드 및 실행 액션이 기본적으로 Gradle에 위임됩니다.

에디터에서 실행할 Gradle 테스트 작업을 올바르게 선택

테스트 실행이 Gradle에 위임된 여러 Gradle 소스 모음을 가진 프로젝트에 대한 지원이 향상되었습니다. 이제 IntelliJ IDEA는 특정 테스트가 실행되었을 때 어떤 작업을 실행해야 하는지 올바르게 파악합니다. 선택할 수 있는 작업이 여러 개인 경우 선택된 테스트에서 실행할 수 있는 모든 작업 목록을 제공합니다.

빌드 액션이 Gradle 또는 Maven에 위임된 경우 HotSwap이 작동

이제 빌드 액션이 Gradle에 위임된 상태에서 디버그하는 경우 HotSwap이 트리거되어 프로젝트를 빌드하면 클래스가 다시 로드됩니다.

HotSwap은 빌드 액션이 Maven에 위임된 경우에도 작동합니다.

Maven

빌드 도구 창에 표시되는 Maven 빌드 출력

편리함을 더하기 위해, 이제 모든 Maven 출력이 단일한 Build(빌드) 도구 창에 표시됩니다. 따라서 더 이상 Run(실행) 창 또는 Messages(메시지) 창을 확인할 필요가 없습니다. 뷰를 전환하고 빌드 출력을 로그로 표시할 수도 있습니다.

향상된 Maven 다이어그램

Maven 다이어그램이 향상되어 새로운 옵션으로 기능이 확장되었습니다. 'Show Conflicts/Duplicates'(충돌/중복 표시)를 사용하면 충돌 및 중복된 종속성을 쉽게 찾을 수 있습니다. 'Show Paths: Root -> Selection'(경로 표시: 루트 -> 선택 항목)을 클릭하면 노드로 연결되는 모든 경로가 표시됩니다.

노드의 종속성만 표시하려는 경우, 'Show Neighbors of Selected Nodes'(선택한 노드에 연결된 항목 표시)를 선택하세요. 다이어그램을 Borderless View(테두리 제거 뷰)로 전환할 수도 있습니다.

버전 관리

Fixup 및 Squash 액션을 VCS 로그에 추가

VCS Log(VCS 로그) 탭의 컨텍스트 메뉴에서 Fixup 및 Squash 액션을 실행하면 올바른 fixup! 및 squash!를 갖춘 커밋을 생성할 수 있습니다. 커밋 메시지로 커밋이 생성됩니다.

VCS 로그에서 바로 일부 파일만 선택 가능

이제 IntelliJ IDEA 2019.1을 사용하면 VCS 로그에 있을 때 커밋에서 일부 파일만 선택할 수 있습니다. 간단히 컨텍스트 메뉴를 실행한 후 'Apply Selected Changes'(선택한 변경 내용 적용) 옵션을 선택하세요.

송수신 커밋 표시

Branches(브랜치) 팝업에서 개별 브랜치에 송수신 커밋이 있는지 확인할 수 있는 옵션이 새로 추가되었습니다. 사용하려면 Preferences(환경 설정)/Settings(설정) | Version Control(버전 관리) | Git에서 'Mark Branches that have incoming/outgoing commits in the Branches popup'(송수신 커밋이 있는 브랜치를 브랜치 팝업에 표시) 옵션을 켜야 합니다.

삭제된 보류 파일 복원 가능

이제 최근에 삭제된 모든 파일을 확인하고 유용한 보류 파일을 복원할 수 있습니다. 간단히 새로운 'Recently Deleted'(최근 삭제) 노드를 VCS 도구 창의 Shelf(보류) 탭에서 사용하면 됩니다.

부분적 Git 커밋을 위한 '모두 선택 취소' 확인란 추가

더욱 간편한 작업을 위해 Commit Changes(변경 내용 커밋) 대화상자의 Diff 창에 'Uncheck all'(모두 선택 취소) 확인란이 새로 추가되어 모든 코드 청크를 한 번에 쉽게 선택 취소할 수 있습니다.

VCS 주석에서 작성자 이니셜 확인 모드

VCS 주석에서 작성자의 전체 이름 대신 이니셜을 확인할 수 있습니다. 주석 탭 위에서 오른쪽 마우스 클릭을 한 다음, 컨텍스트 메뉴에서 View(뷰) | Names(이름) | Initials(이니셜)를 선택하세요.

Diff

빈 Diff 창에 파일 내용을 드래그 앤 드롭하여 추가

파일을 빈 Diff 창으로 끌어와서 텍스트를 복사하여 붙여넣을 수 있습니다.

Diff 뷰어에서 비교 파일의 양쪽 창 위치 바꾸기

2개 파일 비교, 클립보드와 비교 또는 빈 Diff를 사용해 Diff 뷰어를 열면 뷰어 내 양쪽 창의 위치를 바꿀 수 있습니다. 파일을 표시할 위치를 오른쪽, 왼쪽으로 전환하려면 간단히 Swap Sides(양쪽 창 위치 바꾸기)를 선택하세요.

Swap Sides는 디렉터리를 비교할 때도 사용할 수 있습니다.

char 유닛으로 차이점 미리보기

이전에 Diff 뷰어에서 차이점을 확인하려면 word 유닛만 사용해야 했지만 이제 char 유닛을 사용할 수도 있습니다. 이 기능은 소스 코드에 다른 자모 문자(예: 일본어)로 구성된 줄이 있는 경우 매우 유용할 수 있습니다.

최근 위치 팝업

새로운 'Recent Locations'(최근 위치) 탐색 팝업을 만나보세요. 최근 방문했거나 변경한 코드 위치가 모두 표시됩니다. 방문한 모든 위치는 이 팝업에서 시간순으로 나열되어 최근 방문 위치는 상단에, 가장 오래된 방문 위치는 하단에 표시됩니다. 새로운 'Recent Locations' 팝업을 실행하려면 Cmd-Shift-E/Ctrl+Shift+E를 누르세요.

JVM 디버거

디버거 평가 도구에서 'synchronized', 'assert', 'switch' 지원

이제 디버거 평가 도구에서 synchronized 문, assert 표현식, switch 문을 지원합니다.

JVM 디버거에서 코드 블록 스텝아웃

Java 프로젝트를 디버그하는 동안 현재 블록에서 스텝아웃할 수 있습니다. 이 새로운 액션은 메인 메뉴 | Run(실행)에서 이용할 수 있습니다.

새로운 '마우스 포인터까지 실행'하는 마우스 동작

디버그 모드에서 마우스 사용을 선호하는 경우, 줄 위로 마우스를 올리면 이 줄이 강조 표시되고, 그 다음 줄 번호를 클릭하면 Run to Cursor(커서 위치까지 실행) 액션이 수행됩니다.

Scala

for-comprehension 강조 표시

IntelliJ IDEA 2019.1에서는 오류 강조 표시, 묵시적 힌트, GoTo(다음으로 이동)/Quick Definition(빠른 정의)/Quick Documentation(빠른 문서) 액션 등 for-comprehension을 위한 지원 기능이 향상되었습니다.

묵시적 항목의 사용 위치 검색

이제 Find Usages(사용 위치 검색)를 묵시적 정의, apply/unapply 메서드, for-comprehension 메서드, 단일 추상 메서드(SAM) 유형에서 실행할 수 있습니다.

Java로 디컴파일

Scala .class 파일에 소스가 없는 경우에도 이 파일을 Java로 디컴파일할 수 있습니다.

사용자 지정 가능한 Scalafmt 버전

IntelliJ IDEA v2018.2에 추가된 Scalafmt 서식 지정 도구에 대한 지원이 이번 릴리스에서 향상되었습니다. IntelliJ IDEA는 사용자 지정 Scalafmt 버전을 사용할 수 있도록 지원할 뿐만 아니라 사용자에게 필요한 버전을 대신 다운로드합니다.

별도의 HOCON 플러그인

HOCON 지원을 별도의 저장소 및 플러그인에 추가하여 사용자가 필요에 따라 설치 및 제거할 수 있습니다.

오류 강조 표시 개선 사항

이번 릴리스에서는 오류 강조 표시 기능이 다음과 같이 다양한 면에서 크게 향상되었습니다.

  • 부분 단일화 및 전반적인 유형 변수 단일화
  • 생성자 강조 표시, private 생성자 호출
  • Better-monadic-for 컴파일러 플러그인: 'implicit0' 기능
  • Kind-projector: 값 수준의 다형 람다
  • Simulacrum: 매개변수의 개수(arity)가 많은 유형 생성자

Groovy

Groovy 3.0의 Java 스타일 람다 구문 지원

IntelliJ IDEA 2019.1은 Groovy 3.0의 실험적 기능인 Java 스타일 람다 구문을 지원하며 코드 완성, 강조 표시, 유형 추론 등의 편집 지원 기능을 이 구문에 제공합니다. 또한 Groovy 인텐션 및 검사 기능이 람다 본문에서 정상적으로 작동하고, Java 스타일 람다를 서식 지정 및 디버그할 수도 있습니다.

Kotlin

IntelliJ IDEA에 포함된 Kotlin 플러그인이 v1.3.21 버전으로 업데이트되었습니다.

매개변수 없이 'main'을 생성하는 라이브 템플릿

Kotlin 1.3부터 매개변수 없이 main 함수를 사용할 수 있게 되면서 이번 IntelliJ IDEA 릴리스에서도 'main' 라이브 템플릿을 사용해 매개변수 없이 main 메서드를 생성할 수 있게 되었습니다.

또한 이제 기본 'main' 줄임말로 새로운 main 메서드 버전을 생성할 수 있으니 기억해 두세요. 일부 인수를 전달해야 하는 경우, 'maina'라는 줄임말을 사용하면 됩니다.

문자열 변환 기능 개선 사항

'Convert concatenation to template'(연속되는 항목을 템플릿으로 변환) 인텐션으로 각 매개변수에서 불필요한 .toString() 호출을 제거할 수 있습니다.

람다로서의 SAM을 익명 객체로 변환하는 새로운 인텐션

SAM 람다를 사용하는 구문을 익명 객체로 변환해야 할 경우, 이 편리한 새로운 인텐션 액션을 사용해 보세요.

코루틴 코드를 개선하는 인텐션 액션

코루틴을 작업할 때 IntelliJ IDEA는 'async'라는 접미어를 'deferred'를 반환하는 함수에 추가하도록 제안합니다.

JavaScript 및 TypeScript

JavaScript의 구조 분해용 인텐션 추가

IntelliJ IDEA 2019.1에 다양한 리팩터링 및 인텐션이 새로 추가되어 이제 JavaScript 또는 TypeScript 코드에서 구조 분해를 사용할 수 있습니다.

promise를 포함한 함수를 async/await로 변환하는 인텐션

.then() 및 .catch() 호출을 사용하여 promise를 반환하는 함수를 async/await 구문을 사용하는 비동기 함수로 자동 변경할 수 있습니다. 이 빠른 수정을 사용하려면 함수 이름 위에서 Alt-Enter를 눌러 Convert to async function(비동기 함수로 변환)을 선택하세요. 이 기능은 TypeScript, JavaScript 및 Flow에서 사용할 수 있습니다.

CSS 및 HTML 문서 업데이트

CSS 프로퍼티와 HTML 태그 및 속성에 관한 빠른 문서에서 주요 브라우저와의 호환성 등 MDN의 간략한 설명을 표시합니다.

향상된 JavaScript 디버거 콘솔

JavaScript 및 Node.js 디버그 도구 창의 대화형 디버거 콘솔에서 객체를 트리 뷰로 표시하고, CSS를 사용한 로그 메시지의 스타일 지정과 console.group() 및 console.groupEnd()를 사용한 그룹 지정을 지원합니다. 또한, 이 콘솔에서 모든 종류의 로그 메시지를 필터링할 수 있습니다.

Docker

Docker 컨테이너 내부에서 디버그 가능

Docker 컨테이너에서 실행되는 Java 애플리케이션에 디버거를 연결할 수 있게 되었습니다. 이제 IntelliJ IDEA를 사용해 Dockerfile에서 빌드되거나 Docker Compose(docker-compose.yml)로 생성된 컨테이너 내부에서 디버그할 수 있습니다.

Kubernetes

외부 리소스 지원

IntelliJ IDEA 2019.1에서는 외부 리소스를 지원하므로 이제 사용자 지정 리소스 정의 사양을 외부 리소스에서 로드할 수 있습니다. 현재 이 기능은 로컬 파일만 지원됩니다. 사양을 추가하려면 Preferences(환경 설정)/Settings(설정) | Languages & Frameworks(언어 및 프레임워크) | Kubernetes로 이동하여 사용자 지정 리소스 정의 사양의 경로를 추가하세요.

Helm 리소스 파일의 차트에서 이름 변경 리팩터링 사용

Helm 리소스 템플릿 파일의 차트에서 Rename(이름 변경) 리팩터링을 사용할 수 있게 되었습니다. 단, Helm 리소스 템플릿 파일 지원을 이용하려면 Go template 플러그인을 설치해야 합니다.

에디터

JSON으로 코드 스타일 설정 내보내기 옵션

기본 스타일 설정과 동일한 코드 스타일 설정이라도 IntelliJ IDEA에서 JSON으로 모두 내보낼 수 있게 되었습니다. Preferences(환경 설정)/Settings(설정) | Editor(에디터) | Code Style(코드 스타일)로 이동한 다음, 드롭다운 메뉴에서 'Export(내보내기) | IntelliJ IDEA code style JSON(IntelliJ IDEA 코드 스타일 JSON)' 옵션을 선택하세요.

파일 유형에 따라 줄 바꿈 사용 가능

Preferences(환경 설정)/Settings(설정) | Editor(에디터) | General(일반)로 이동해 Soft-wrap files(파일 줄 바꿈) 필드를 사용하여 특정 파일 유형에서 줄 바꿈 기능을 이용할 수 있습니다.

Windows에서 Ctrl+Y를 누르면 표시되는 단축키 구성 대화상자

Windows에서 Ctrl+Y 키를 처음 사용하면 해당 단축키를 'Delete Line'(줄 삭제)과 'Redo'(재실행) 중 어디에 설정할 것인지 묻는 Keymap Configuration(단축키 구성) 대화상자가 표시됩니다.

Sublime Text 단축키

IntelliJ IDEA의 사전 구성된 단축키는 계속해서 추가되어 왔으며 v2019.1에는 Sublime Text 단축키가 포함되었습니다. Preferences(환경 설정)/Settings(설정) | Keymap(단축키)으로 이동하여 Keymap 드롭다운 목록에서 간단히 Sublime Text를 선택하기만 하면 IntelliJ IDEA에서 Sublime Text 단축키를 사용할 수 있습니다.

VS Code 단축키 플러그인

이제 별도의 플러그인으로 제공되는 사전 구성된 VS Code 단축키를 사용할 수 있습니다. 플러그인을 설치한 다음, Preferences(환경 설정)/Settings(설정) | Keymap(단축키)에서 VS Code 단축키를 선택하세요.

Groovy 3.0의 Java 스타일 람다 구문 지원

IntelliJ IDEA 2019.1은 Groovy 3.0의 실험적 기능인 Java 스타일 람다 구문을 지원하며 코드 완성, 강조 표시, 유형 추론 등의 편집 지원 기능을 이 구문에 제공합니다. 또한 Groovy 인텐션 및 검사 기능이 람다 본문에서 정상적으로 작동하고, Java 스타일 람다를 서식 지정 및 디버그할 수도 있습니다.

Spring Cloud Stream

Spring Cloud Stream에 편집 기능 지원

IntelliJ IDEA는 구문 강조 표시, 검사, 빠른 수정 및 코드 완성(application.properties 또는 application.yml 파일에서 값 및 참조에 적용되는 바인더 이름 완성 등)과 같은 다양한 편집 기능 지원을 Spring Cloud Stream 프로젝트에 제공합니다.

바운드된 생산자 및 소비자 사이를 탐색

여백 아이콘을 사용해 바운드된 소비 및 생산 메시지 핸들러 사이를 이동할 수 있습니다. 단, 소비자와 생산자는 application.properties 또는 application.yml 파일에서 'spring.cloud.stream.bindings' 구성 키를 통해 바운드되어야 합니다.

Thymeleaf

향상된 Thymeleaf 지원

'th: replace' 및 'th: include' 속성에서 참조된 템플릿 부분으로 이동할 수 있습니다. 또한 포함되고 교체된 이러한 부분에서 코드 완성 및 Rename(이름 변경) 리팩터링도 사용할 수 있습니다.

데이터베이스 도구

Greenplum, Vertica, Apache Hive 지원

IntelliJ IDEA에서 다음의 새로운 데이터베이스를 지원합니다.

  • Greenplum – PostgreSQL 기반의 분석 데이터베이스
  • Vertica – 대규모 데이터를 처리하도록 설계된 열 기반 저장소
  • Apache Hive – 데이터 쿼리 및 분석을 제공하기 위해 Apache Hadoop을 기반으로 설계된 데이터 웨어하우스

향상된 연결 대화상자

연결 대화상자의 디자인이 새롭게 변경되고 몇 가지 중요한 설정이 추가되었습니다. 이제 'startup script' 필드에서 SQL 쿼리를 추가하면 연결을 설정할 때마다 쿼리가 실행됩니다. 또한 일정 시간이 지나면 IntelliJ IDEA에서 자동으로 연결을 해제하도록 만들기 위해 제한시간을 설정하거나 계속 연결을 유지하기 위해 N초마다 쿼리를 실행하도록 시간 간격을 설정할 수 있습니다.