IntelliJ IDEA 2021.3의 새로운 기능

IntelliJ IDEA 2021.3은 원격 개발(베타)을 지원하고 Repair IDE...(IDE 문제 해결...) 액션을 통해 IDE 문제를 해결하는 새로운 방법을 선보입니다. 또한 Kotlin 디버거 업데이트 및 Constant conditions(상수 조건) 검사를 비롯해 기타 주요 변경 사항을 제공합니다. 다음의 간략한 설명을 통해 해당 기능 및 주목할 만한 기타 기능을 자세히 살펴보실 수 있습니다.

주요 업데이트

원격 개발

원격 개발
베타
Ultimate

이제 IntelliJ IDEA Ultimate에서 원격 개발 워크플로의 베타 버전을 지원합니다. 이 기능을 통해 전 세계 어디서든 IntelliJ IDEA의 백엔드를 실행하는 원격 시스템에 연결할 수 있습니다. 강력한 원격 시스템에서 모든 처리가 이루어져, 로컬 시스템에 있는 것처럼 프로젝트 작업을 원활히 수행할 수 있습니다. IntelliJ IDEA의 시작 화면 또는 JetBrains Gateway라는 신규 애플리케이션(JetBrains Toolbox App 앱에서 이용 가능)에서 이 기능을 시작할 수 있습니다.

그뿐 아니라 전체 소프트웨어 개발 파이프라인을 위한 통합 플랫폼인 Space를 사용하면 개발 환경을 생성, 사전 빌드, 공유, 복제하거나 수면 모드 상태로 전환하고 관리할 수 있습니다.

자세한 내용은 이 블로그 게시물을 확인하세요.

IDE 문제 해결

IDE 문제 해결

IntelliJ IDEA 2021.3은 IDE가 제대로 작동하지 못할 경우, 이를 초래한 문제를 진단하고 해결할 수 있는 새롭고 빠른 방법을 제시합니다. IDE가 제대로 작동하지 않으면 File(파일) 메뉴에서 새 Repair IDE...(IDE 문제 해결)를 호출해 보세요. 가장 흔히 발생하는 문제 해결을 위한 일련의 단계를 안내받을 수 있습니다.

Kotlin Constant conditions(상수 조건) 검사

Kotlin Constant conditions(상수 조건) 검사

Constant conditions(상수 조건) 검사가 새롭게 추가되었습니다. 이 검사는 IntelliJ IDEA에서 자명하지 않은 조건 및 항상 true, false, null 또는 0인 것으로 정적으로 알려진 값을 보고하는 데 유용합니다. 이 기능은 유사한 Java용 검사와 동일하게 작동하며, 동일한 검사를 대부분 지원합니다. 이 신규 검사는 Preferences/Settings(환경 설정/설정) | Editor(에디터) | Inspections(검사) | Kotlin | Probable bugs(잠재적 버그)에서 제공됩니다.

Kotlin 관련 디버거 업데이트

스마트 스텝인투

체인 메서드 호출 및 람다가 있는 표현식을 디버그할 경우, Step Into(스텝인투) 액션은 기본적으로 Smart Step Into(스마트 스텝인투) 기능을 제공합니다. 이 기능은 스텝인투를 할 수 있는 메서드와 람다를 강조 표시합니다. 이를 사용하려면, Debug(디버그) 도구 창 상단 패널의 Step Into(스텝인투) 버튼을 누르거나 F7 단축키를 사용하면 됩니다. 이제 IDE에서 코드로 스텝인투가 가능한 위치가 강조 표시되며, 원하는 줄을 클릭하여 선택할 수 있습니다.

스택 프레임 인라인화

이제 디버거에서 Kotlin 인라인 함수를 탐지하여 스택 추적 패널에 인라인 함수 호출을 표시할 수도 있습니다. 사용자는 호출로 이동하여 각 프레임의 변수를 검사하고 평가할 수 있습니다.

에디터

모든 탭의 글꼴 크기 변경

요청에 따라 ⌘+마우스 휠(macOS) 또는 Ctrl+마우스 휠(Windows 및 Linux)을 사용하여 모든 열린 탭의 글꼴 크기를 동시에 변경하는 기능이 출시되었습니다. 이 기능을 활성화하려면 Preferences/ Settings(환경 설정/설정) | Editor(에디터) | General(일반)l에서 Change font size with Command + mouse wheel in(Command + 마우스 휠로 글꼴 크기 변경)All editors(모든 에디터)를 선택합니다. Active editor(활성화된 에디터)를 선택할 경우 해당 단축키로 현재 작업 중인 파일의 글꼴 크기만 변경됩니다.

인텐션 미리보기 개선

IntelliJ IDEA는 인텐션을 코드에 적용하기 전에 인텐션 액션의 결과를 미리 보고 빠르게 수정할 수 있는 유용한 옵션을 지원합니다. 이 기능은 Intention actions(인텐션 액션) 메뉴에서 사용할 수 있습니다. F1(macOS) 또는 Ctrl+Q(Windows 및 Linux)를 누르면 미리보기가 활성화됩니다.

인텐션 미리보기는 2020.1 버전에서 처음 선보인 이래 계속해서 개선되어왔습니다. IntelliJ IDEA 2021.3에서는 더 많은 Kotlin 인텐션 액션 및 빠른 수정에서 이 기능을 사용할 수 있으며, 'Preview isn't available'(미리보기를 사용할 수 없습니다)이라는 메시지 대신 지원되지 않는 인텐션 액션과 관련한 유용한 HTML 설명이 표시됩니다. 또한 여러 파일을 수정하는 액션의 경우, 가능한 결과의 일부가 미리보기로 표시됩니다. 부분적으로 표시되는 결과만으로 액션 사용 시 변경 사항을 전반적으로 파악할 수 있습니다.

향상된 Markdown 지원

향상된 Markdown 지원

IntelliJ IDEA 2021.3에서는 테이블을 간편하게 생성할 수 있습니다. 컨텍스트 메뉴를 호출하여 Insert(삽입) | Table(테이블)을 선택하면 됩니다. 마우스를 올리거나 키보드를 사용하여 원하는 크기를 선택할 수 있습니다.

테이블의 셀 너비는 입력하는 대로 조정됩니다. 플로팅 툴바를 활용하면 테이블 내용 편집도 가능합니다.

새로운 열을 생성하려면 Shift+Enter를 누르고 Tab 키를 사용하여 다음 셀로 이동할 수 있습니다.

탭의 모든 액션에 빠른 액세스

탭의 모든 액션에 빠른 액세스

에디터 탭을 훨씬 간편하게 사용할 수 있습니다. 탭 창의 오른쪽 모서리에 점 3개를 클릭하면 모든 탭 액션을 사용할 수 있습니다.

사용자 경험

Bookmarks(북마크) 도구 창

유사한 인스턴스인 Favorites(즐겨찾기)를 대체할 Bookmarks(북마크) 도구 창이 새롭게 도입되었습니다. 이제 단축키 F3(macOS) 또는 F11(Windows 및 Linux)를 사용하여 파일, 폴더 및 클래스를 중요 사항으로 표시할 수 있습니다.

북마크를 추가하면 기본적으로 IntelliJ IDEA는 Bookmarks(북마크) 도구 창의 프로젝트 이름이 붙은 노드에 북마크를 추가합니다. 새 북마크가 추가될 때마다 해당 노드 내부 목록의 최상단에 표시됩니다. 도구 창 설정에서 Sort Groups and Bookmarks(그룹 및 북마크 정렬) 옵션을 사용하면 북마크를 유형별로 정렬할 수 있습니다. 또한 새 노드를 생성하고 드래그앤드롭으로 항목을 추가할 수 있습니다.

Run(실행) 도구 창 분할 기능

Run(실행) 도구 창 분할 기능

2021.3 버전에는 Run(실행) 도구 창을 탭으로 분할하는 기능이 추가되었습니다. 이제 여러 구성을 동시에 실행하고 모든 결과를 확인할 수 있습니다.

창을 분할하려면 표시할 탭을 Run(실행) 도구 창 내부의 강조 표시된 영역에 끌어다 놓습니다. 도구 창의 분할을 해제하려면 상단 패널을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 Unsplit(분할 해제)을 선택합니다.

Search Everywhere(전체 검색)에서 머신 러닝 기반으로 액션 검색

Search Everywhere(전체 검색)에서 머신 러닝 기반으로 액션 검색

IntelliJ IDEA에서 액션 검색 시 기본적으로 Search Everywhere(전체 검색)에 머신러닝이 지원됩니다. 다음 사항을 고려하여 ML 기반의 공식에 대한 학습이 이루어졌습니다.

  • 특정 사용자의 액션 사용 내역
  • 전체 사용자층에서 액션 사용 빈도
  • 검색어 길이, 액션 이름 등

ML 기반 모델이 검색 품질을 개선하고 구체적인 요구 사항에 맞는 결과를 반환하기를 바랍니다.

Find Usages(사용 위치 찾기) 개선

Find Usages(사용 위치 찾기) 개선

⌥F7(macOS) 또는 Alt+F7(Windows 및 Linux)로 메서드 구현의 사용 위치를 검색하면, IDE는 팝업 창에서 기본 메서드의 사용 위치를 찾을지 질문하지 않습니다. 대신 IntelliJ IDEA는 기본적으로 최상위 메서드를 검색 대상으로 사용합니다. 동작을 변경하려면 톱니바퀴 아이콘을 클릭하여 액세스 가능한 Find Usages(사용 위치 찾기) 도구 창 설정에서 Search for base method usages(기본 메서드 사용 위치 검색) 체크박스 선택을 해제합니다.

사용 위치 표시 개편

Show Usages(사용 위치 표시) 대화상자에 유용한 신규 기능 몇 가지가 추가되었습니다. 사용 위치별 소스 코드 미리보기 기능이 도입되었으며, 이는 상단 툴바 패널에서 사각형 아이콘을 클릭하여 확인할 수 있습니다. 또 다른 업데이트는 Preview(미리보기) 아이콘 옆의 새로운 드롭다운 목록을 사용하여 검색 범위를 변경하는 기능입니다. 또한 창의 제목 표시줄에 검색한 코드 요소의 타입과 발견된 사용 위치 개수가 표시됩니다.

또한 대화상자 너비를 설정하면 다음에 호출 시에도 IDE에 해당 설정이 유지되는 사소하지만 매우 편리한 업데이트도 있습니다.

빈 프로젝트 개선 사항 및 새로운 멀티 모듈 프로젝트 노드

2021.3 버전의 경우 IntelliJ IDEA 프로젝트 마법사에서 노드의 일부 변경 사항을 확인할 수 있습니다.

이제 Empty Project(빈 프로젝트) 노드를 선택하여 기본 프로젝트를 생성하고, 해당 프로젝트에서 다양한 형식의 개별 파일로 작업하고 Java 및 Kotlin 클래스를 추가할 수 있습니다. Java 또는 Kotlin 클래스가 있는 경우 IDE에서 프로젝트를 컴파일할 수 있도록 자동으로 프로젝트를 구성합니다.

새로운 Multi-Module Project(멀티 모듈 프로젝트) 노드를 활용하면 복잡한 구조의 프로젝트를 완전히 처음부터 생성할 수 있습니다. 프로젝트가 생성되면 Project Structure(프로젝트 구조) 대화상자가 열려 다양한 모듈을 추가할 수 있습니다.

접근성 업데이트

IntelliJ IDEA 2021.3 버전에서는 일부 접근성 문제가 개선되어 스크린 리더를 더욱 편리하게 사용할 수 있습니다. 사용자의 요청에 따라 도구 창 위젯 팝업과 마우스를 올려놓을 때 표시되는 빠른 문서 팝업을 비활성화했습니다. 또한 Go to Declaration(선언으로 이동) 대화상자 호출 시 발생하는 문제도 해결되었습니다.

이번 릴리스에서는 macOS 접근성 지원도 개선했습니다. 보이스오버 포커스와 관련된 몇 가지 문제가 해결되었고, 프로젝트 생성 시 스크린 리더가 새 프로젝트 마법사의 목록 항목을 탐지할 수 있게 되었습니다. 코딩 중 방해되지 않도록 소리가 재생되는 도움말 툴팁 설명의 개수를 줄였습니다.

Java

안전하지 않은 문자열 추적 검사

이제 IntelliJ IDEA가 SQL 삽입 및 XSS 결함, 민감한 데이터 유출, 안전하지 않은 역직렬화와 같은 위험을 경고합니다. 또한 안전하지 않은 데이터가 secure 메서드로 전달되지 않도록 방지합니다. 이러한 추가 경고는 새로운 Non-safe string is passed to a safe method(안전하지 않은 문자열이 안전한 메서드로 전달됨) 검사를 통해 제공됩니다.

이 검사가 작동하려면 문자열에 @Untainted('safe') 또는 @Tainted('unsafe') 어노테이션이 추가되어야 합니다. 이러한 어노테이션은 org.checkerframework.​checker.​tainting.​qual 종속성을 추가할 경우 유효합니다.

새로운 기타 Java 검사

코드를 단순화하는 데 도움이 되는 검사 2가지가 추가되었습니다. 첫 번째 검사는 collect(toList()).toList()로 바꾸도록 제안합니다. 이 검사는 Java 버전 16 이상에서 사용할 수 있습니다. 두 번째 검사는 collection.addAll(List.of("x"))collection.add(x)로, map.putAll(Map.of("a", "b"))map.put("a", "b")로 바꾸도록 제안합니다.

향상된 리팩토링 기능

Java에서 지역 변수를 삽입하는 경우, 이제 해당 변수에 적용 가능한 설정이 팝업으로 표시되지 않습니다. 이 팝업이 표시되면 작성 중이던 코드가 덮이고는 했습니다. 대신 변수 옆의 톱니바퀴 아이콘을 클릭하거나 단축키 ⌥⇧O(macOS) 또는 Alt+Shift+O(Windows)를 사용하여 해당 옵션을 사용할 수 있습니다.

또한 Introduce parameter(매개변수 삽입) 리팩터링도 개선했습니다. ⌥⌘P(macOS) 또는 Ctrl+Alt+P(Windows)를 눌러 이 리팩터링을 호출하면 IDE에서 대체하고 싶은 사용 위치를 묻습니다. 선택 후 표시되는 톱니바퀴 아이콘을 클릭하면 리팩터링 설정을 추가로 구성할 수 있습니다.

Run/Debug Configurations(실행/디버그 구성)의 사용자 지정 가능한 클래스 경로

Run/Debug Configurations(실행/디버그 구성)의 사용자 지정 가능한 클래스 경로

구성에 따라 Run/Debug Configurations(실행/디버그 구성) 대화상자에서 사용자 지정 클래스 경로를 정의해야 하는 경우가 있습니다. 이번 버전부터는 Modify options(옵션 수정) | Modify classpath(클래스 경로 수정)를 통해 경로의 사용자 지정이 가능합니다.

Kotlin

Extract constant(상수 추출) 리팩터링

Extract constant(상수 추출) 리팩터링

Kotlin에서 상수 추출을 위한 새로운 리팩터링이 추가되었습니다. 이 리팩터링을 사용하려면 문자열에 캐럿을 놓은 후 ⌥⌘C(macOS) 또는 Ctrl+Alt+C(Windows 및 Linux)를 누릅니다.

논블로킹 컨텍스트의 잠재적 블로킹 호출 검사 개선

Possibly blocking call in non-blocking context(논블로킹 컨텍스트의 잠재적 블로킹 호출)검사 개선

Possibly blocking call in non-blocking context(논블로킹 컨텍스트의 잠재적 블로킹 호출) 검사는 부적절한 컨텍스트에서 코루틴을 사용할 경우 경고합니다. 이번 릴리스에서 해당 검사는 경고뿐 아니라 컨텍스트에 따라 빠른 수정 기능도 제공합니다.

또한 몇 가지 추가 개선 사항이 있습니다. 이 검사는 한층 다양한 경우에 사용할 수 있으며, 사용자 지정이 가능하므로 특정 환경에서 더욱 잘 작동합니다.

범위에 대한 인라인 힌트

범위에 대한 인라인 힌트

Kotlin에서 지원되는 범위를 선언하는 수많은 방식을 이해하기 어려울 수 있습니다. 이해를 돕기 위해 범위에 포함된 단어나 기호가 의미하는 바를 일반 수학 기호로 설명하는 인라인 힌트를 추가했습니다. 이 기능이 필요하지 않은 경우 힌트를 마우스 오른쪽 버튼으로 클릭하고 Disable 'Ranges' hints type('범위' 힌트 타입 비활성화)을 선택하여 쉽게 비활성화할 수 있습니다.

New Project(새 프로젝트) 마법사 개선

New Project(새 프로젝트) 마법사 개선

New Project(새 프로젝트) 마법사의 레이아웃 개선을 통해 모든 필드에 툴팁 설명이 추가되어 필요한 정보를 쉽게 이해할 수 있습니다. 템플릿 섹션도 업데이트되었습니다. 사용 빈도가 낮은 템플릿을 없애고 Compose 웹 애플리케이션 생성을 위한 템플릿을 추가했습니다.

마지막으로, 프로젝트 설정 단계도 훨씬 간편하게 개선되었습니다. 이제 기본 필드만 작성하면 됩니다.

Scala

Scala 3 지원 개선 사항

Scala 3 지원 개선 사항

이 릴리스에서는 주요 초점을 Scala 3 지원에 두고 강조 표시, 탐색 및 end 마커 자동 완성 기능을 추가했습니다. 또한 given, usingexport 키워드, 소프트 키워드 및 quiet 구문에 대한 자동 완성도 지원됩니다. 이제 TASTy 리더가 package object와 상류 타입의 분산 및 바운드를 분석할 수 있습니다. 렉서 및 파서 오류의 강조 표시 속도가 대폭 빨라지고, Scala 3와 호환되는 검사도 추가되었습니다. given 가져오기 해결 방식 개선, final 최상위 수준 멤버와 abstract lazy val 지원도 있습니다.

Scala 3/Scala 2 교차 컴파일 프로젝트를 Scala 2로 여는 옵션

Scala 3/Scala 2 교차 컴파일 프로젝트를 Scala 2로 여는 옵션

Scala 2와 Scala 3 모두에 대해 컴파일해야 하는 프로젝트는 사실 대부분 Scala 2 프로젝트임에도 Scala 2용으로 교차 컴파일된 Scala 3 프로젝트로 모델링됩니다.

이러한 프로젝트를 Scala 2에서 열면 IDE가 올바른 Scala 버전을 사용할 수 있으므로 더욱 안정적입니다.

Scala 데이터 흐름 분석

Scala 데이터 흐름 분석

이제 Scala 플러그인이 데이터 흐름 분석을 지원하므로 프로그래밍 오류를 더 쉽게 파악할 수 있습니다. 자세한 내용은 이 블로그 게시물을 확인하세요.

Scala 컴파일러 옵션 자동 완성

Scala 컴파일러 옵션 자동 완성

Scala 컴파일러에는 수많은 옵션이 있으며, 이를 암기하여 사용하는 프로그래머는 거의 없을 겁니다. 게다가 이 옵션은 사용 중인 Scala 버전에 따라 다르기도 합니다.

이제 컴파일러 옵션을 자동 완성하고, 각 옵션에 대한 빠른 문서를 확인할 수 있습니다.

범위에 대한 인레이 힌트

범위에 대한 인레이 힌트

1 to 3이 포괄적 범위인지, 배타적 범위인지 의문이 든 적이 있으신가요? 1 until 3 혹은 Range(1, 3)는 어떤 범위일까요 ? 이제 명쾌한 답이 제시되므로 의문이 말끔히 해소됩니다.

JavaScript

종속성 업데이트를 위한 새로운 검사

종속성 업데이트를 위한 새로운 검사
Ultimate

IntelliJ IDEA 2021.3을 사용하면 에디터에서 바로 npm 패키지를 최신 버전으로 업데이트할 수 있습니다! package.json 파일을 열고 업데이트할 패키지 버전에 캐럿을 놓은 후 ⌥⏎(macOS) 또는 Alt+Enter(Windows 및 Linux)를 누르고 Update ‘package name’ to the latest version('패키지 이름'을 최신 버전으로 업데이트)을 선택합니다. 패키지 버전 위로 마우스를 가져가면 빠른 수정도 표시됩니다.

향상된 HTML 코드 완성

향상된 HTML 코드 완성
Ultimate

HTML에서 코드 완성 기능이 작동하는 방식이 개선되었습니다. 에디터에서 태그 이름이나 약어를 입력하거나 코드 완성을 호출할 때마다 IntelliJ IDEA가 관련 제안을 즉시 표시합니다. 이전에는 <를 먼저 입력한 경우에만 표시되었습니다. 또한 문자 엔티티 참조에 대한 코드 완성도 더 효과적으로 작동합니다.

SSH

SSH 연결에 대한 프록시 지원

이제 Preferences/Settings(환경 설정/설정) | Tools(도구) | SSH Configurations(SSH 구성)에서 SSH 구성에 대한 HTTP 또는 SOCKS 프록시 서버를 지정할 수 있습니다. 새로운 HTTP/SOCKS 섹션에서 프록시 타입을 선택한 후 호스트 이름과 포트를 입력하고, 필요한 경우 사용자 이름과 비밀번호로 인증을 적용할 수 있습니다. 또한 SSH 프록시 설정을 IDE 전체 설정과 동기화할 수도 있습니다. Use global IDE proxy settings(IDE 전체 프록시 설정 사용) 체크박스를 선택합니다.

프로파일러

.jfr 스냅샷 비교

.jfr 스냅샷 비교
Ultimate

이제 변경 사항이 프로그램에서 적절히 작동하는지, 혹은 그로 인해 회귀가 발생했는지 쉽게 확인할 수 있습니다. 이를 확인하려면 Profiler(프로파일러) 도구 창에서 비교할 두 개의 스냅샷을 엽니다. 가장 최근 스냅샷에서 diff 아이콘을 클릭하고 기준으로 사용할 스냅샷을 선택합니다. 플레임 그래프, 호출 트리 또는 메서드 목록 형식으로 IDE에 결과가 표시됩니다.

Windows에서 Async Profiler 2.0 지원
Ultimate

2021.2 버전에서는 IntelliJ IDEA macOS 및 Linux 버전용 Async Profiler 2.0 지원이 추가되었습니다. 2021.3 버전부터는 Windows 버전에서도 Async Profiler 2.0을 별도의 설정 없이 사용할 수 있습니다. 이 지원은 원활한 프로파일링 경험을 제공하며 네이티브 함수가 스냅샷에 표시되는 방식을 개선합니다.

빌드 도구

새롭게 설계된 Maven 구성

새롭게 설계된 Maven 구성

이번 릴리스에서는 실행/디버그 구성을 개선하는 데 몇 가지 성과를 거두었으며, Maven 구성이 대폭 개편되었습니다. 주요 매개변수가 화면 한 곳에 모두 표시되며, Modify options(옵션 수정)을 통해 추가 옵션을 사용할 수도 있습니다.

.mvn/maven.config 지원

.mvn/maven.config 지원

.mvn/maven.config 파일에서 프로젝트별 Maven 설정을 구성하려면 Preferences(환경 설정)/Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포) | Maven으로 이동하여 Use settings from .mvn/maven.config(.mvn/maven.config의 설정 사용)를 선택합니다. 단, 해당 파일의 설정은 표준 Maven UI 설정을 재정의한다는 사실을 유념하세요.

버전 관리

원격 브랜치에서도 작동하는 Checkout and Rebase onto Current(체크아웃하고 현재 브랜치에 리베이스)

원격 브랜치에서도 작동하는 Checkout and Rebase onto Current(체크아웃하고 현재 브랜치에 리베이스)

선택한 브랜치를 체크아웃하고 현재 체크아웃된 브랜치상에서 리베이스하려면 Checkout and Rebase onto Current(체크아웃하고 현재 브랜치에 리베이스) 액션을 사용해 보세요. 기존에는 로컬 브랜치에서만 지원되었던 액션입니다. IntelliJ IDEA 2021.3부터 원격 브랜치에서도 이 액션을 사용할 수 있습니다.

VCS 설정 재구성

Preferences(환경 설정)/Settings(설정) | Version Control(버전 관리)의 설정 구조가 개선되었으며, 핵심 구성 중 일부를 더 쉽게 찾을 수 있습니다. 이제 Version Control(버전 관리) 노드에서 사용 가능한 모든 설정의 링크를 제공하므로 해당 노드에서 탐색을 시작하면 편리합니다. 다음으로 Git 노드로 이동하면 모든 설정이 가장 중요한 프로세스인 Commit(커밋), Push(푸시)Update(업데이트)에 해당하는 섹션으로 분류된 것을 확인할 수 있습니다. 또한 섹션 내의 매개변수도 한결 논리적으로 구성됩니다. Directory mappings(디렉터리 매핑)를 위한 별도의 노드도 추가되었으며, 백그라운드 연산은 기본적으로 활성화됩니다. Background(백그라운드) 노드는 더 이상 존재하지 않습니다.

새로운 Changes(변경 내용) 도구 창

새로운 Changes(변경 내용) 도구 창

IntelliJ IDEA 2021.3부터 IDE가 에디터 왼쪽에 있는 별도의 Changes(변경 내용) 도구 창에서 커밋 간의 차이를 표시합니다.

새로운 Push All up to Here(여기까지의 내용을 모두 푸시) 액션

새로운 Push All up to Here(여기까지의 내용을 모두 푸시) 액션

확실한 커밋만 푸시하고 나머지 커밋은 남겨두는 액션이 새롭게 추가되었습니다.

이 액션을 사용하면 Git 도구 창의 Log(로그) 탭에서 선택한 커밋까지 푸시할 수 있습니다. 사용하려면 멈출 지점의 커밋을 선택한 후 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 호출하고, 새로운 Push All up to Here(여기까지의 내용을 모두 푸시) 액션을 선택하면 됩니다.

Align Changes Highlighting(변경 내용 강조 표시 정렬)

Align Changes Highlighting(변경 내용 강조 표시 정렬)

톱니바퀴 아이콘 아래의 Diff 화면 설정에 Align Changes Highlighting(변경 내용 강조 표시 정렬) 옵션이 새롭게 추가되었습니다. 이 기능을 사용하면 변경되지 않은 줄이 나란히 표시되도록 정렬하여, 복잡한 수정 사항이 있는 경우 Diff를 더 쉽게 읽을 수 있습니다. 따라서 추가 또는 삭제된 코드를 더 명확하게 살펴볼 수 있습니다.

터미널

Windows에서 ConPTY 지원

Windows에서 ConPTY 지원

In v2021.3, we’ve introduced support for the new ConPTY API on Windows. It addresses several issues users were having with the old implementation, which was based on winpty, and adds support for 24-bit colors in the terminal.

선행 입력 지원

선행 입력 지원

IntelliJ IDEA 터미널에 새롭게 추가된 선행 입력 지원은 텍스트 수정 사항을 예측하여 즉시 밝은 회색으로 표시합니다. 이 기능을 사용하면 로컬 시스템 및 원격 시스템에서 작업하는 경우 모두 터미널에 똑같이 빠르게 입력할 수 있습니다.

디버거

디버거에서 표현식 평가

디버거에서 표현식 평가

이번 릴리스에서는 Evaluate(평가) 기능을 더 쉽게 찾을 수 있습니다. 이전에는 평가 작업을 수행해야 할 때 대부분의 사용자는 감시점 기능을 이용했습니다. Evaluate(평가) 대화상자 대신 감시점을 생성한 후 제거하는 방식이었죠. 이제 Debug(디버그) 도구 창에서 바로 Evaluate(평가) 필드에 액세스할 수 있어 표현식을 더 확실히 평가하는 간편한 방식이 지원됩니다.

프레임워크 및 기술

HTTP 클라이언트의 gRPC 요청
Ultimate

IntelliJ IDEA의 HTTP 클라이언트는 gRPC 요청에 대한 기본 지원을 제공합니다. GRPC 키워드를 입력하여 요청을 시작하면 HTTP 클라이언트에서 코드 완성을 제안합니다. 그러므로 알려진 모든 gRPC 서비스, 특정 서버의 단항 및 서버 스트리밍 메서드, 가장 중요한 요청 본문의 필드와 관련한 메시지가 IDE에 표시됩니다.

또한 HTTP 클라이언트에서 gRPC 요청을 생성하는 새로운 기능도 있습니다. 이 기능을 사용하려면 .proto 파일에서 여백 아이콘을 클릭하면 됩니다.

HTTP 클라이언트의 바이너리 응답

HTTP 클라이언트의 바이너리 응답
Ultimate

HTTP 클라이언트는 응답에서 이미지를 탐지하고 응답 콘솔에 해당 이미지의 미리보기를 표시할 수 있습니다.

HTTP 클라이언트에서 텍스트 스트림 및 JSON 스트림 지원
Ultimate

IntelliJ IDEA에서 스트리밍 애플리케이션을 테스트할 경우, HTTP 클라이언트에서 출력을 즉시 표시하므로 스트림이 끝날 때까지 기다릴 필요가 없습니다. 이는 text/event-stream, application/stream+JSONapplication/x-ndjson 콘텐츠 타입에 대한 지원이 추가되어 가능해졌습니다. 또한 스트림이 끝날 때에도 알림이 제공됩니다.

HTTP 클라이언트에서 사용자 지정 파일 또는 디렉터리로 출력 리디렉션
Ultimate

HTTP 클라이언트에서 사용자 지정 파일 또는 디렉터리로 출력을 리디렉션할 수 있습니다. 강제 리디렉션 및 소프트 리디렉션에 사용 가능한 2가지 연산자는 다음과 같습니다.

  • >> 연산자: 항상 새 파일을 생성하고 요청된 파일 이름이 이미 있는 경우 -n 접미사를 추가합니다.
  • >>! 연산자: 파일이 이미 있는 경우 다시 작성합니다.

HTTP 요청 식별자 지원
Ultimate

@name을 통한 주석이나 첫 번째 구분 기호(###)의 텍스트로 요청 식별자를 추가할 수 있습니다. IDE에서 이러한 식별자를 이해하고 Services(서비스) 도구 창이나 Run Configuration(실행 구성), Run Anything(무엇이든 실행)Search Everywhere(전체 검색) 대화상자에서 해당 식별자의 요청을 호출할 수 있습니다.

Qute 템플릿 언어 지원

Qute 템플릿 언어 지원
Ultimate

이제 Qute도 지원되는 템플릿 언어 중 하나입니다. 즉, IntelliJ IDEA에서 코드 강조 표시, 자동 완성 및 Quarkus 프로젝트 템플릿을 개발하는 데 도움이 되는 기타 기능을 제공합니다.

보조 사양 파일에서 참조 문제 해결 및 코드 완성

보조 사양 파일에서 참조 문제 해결 및 코드 완성
Ultimate

IntelliJ IDEA는 OpenAPI 사양이 여러 파일에 있고 $ref를 통해 연결된 경우 탐지하여 코드 완성을 제공할 수 있습니다.

반응형 코드를 위한 새로운 블로킹 및 논블로킹 어노테이션

반응형 코드를 위한 새로운 블로킹 및 논블로킹 어노테이션
Ultimate

We’ve made 2 additions to the JetBrains annotation collection. 프로젝트 종속성에 'org.jetbrains:annotations:23.0.0'을 추가하면 클래스와 메서드에 @Blocking 또는 @NonBlocking 어노테이션을 더할 수 있습니다. 해당 어노테이션을 추가하면 Kotlin 코루틴 또는 Project Reactor, RxJava 및 SmallRye Mutiny를 사용한 반응형 코드와 같은 논블로킹 컨텍스트에서 IDE가 블로킹 호출을 탐지할 수 있습니다.

또한 IDE는 그에 대응하는 Micronaut 및 SmallRye Mutiny의 어노테이션을 자동으로 지원합니다.

Spring 및 Java EE의 블로킹 코드 탐지 개선

Spring 및 Java EE의 블로킹 코드 탐지 개선
Ultimate

이제 IntelliJ IDEA는 Spring 및 Java EE의 블로킹 코드를 더 잘 탐지합니다(예: Spring Data JpaRepository, CrudRepository, RestTemplate, JdbcTemplate, Spring Feign 인터페이스 메서드, JPA EntityManager 호출 및 @Transactional 어노테이션이 추가된 모든 메서드 및 클래스 등).

향상된 Spring Boot 구성

향상된 Spring Boot 구성
Ultimate

Spring Boot 프로젝트용 Run/Debug Configurations(실행/디버그 구성) 대화상자가 새롭게 바뀌었습니다. 설계는 이전에 업데이트된 Java 구성과 유사합니다. 새로운 인터페이스에서는 화면 한 곳에 주요 설정이 표시되며, Modify Options(옵션 수정)를 통해 더 많은 매개변수를 구성할 수 있습니다.

Spring Boot 애플리케이션 파일 지원 개선

Spring Boot 애플리케이션 파일 지원 개선
Ultimate

IntelliJ IDEA는 spring.config.import 키를 사용하여 다른 파일을 참조할 경우 추가 구성 파일(프로퍼티 또는 .yaml)에서 코드 완성 기능을 제공합니다. 이 기능은 복잡한 사용자 지정 Spring Boot 구성 파일을 설정하는 데 유용합니다.

application.yaml에 대한 참조

application.yaml에 대한 참조
Ultimate

이제 Spring Boot 프로젝트에서 @Value, @ScheduledEnvironment.getProperty()application.yaml에 대한 참조에 코드 완성 및 사용 위치 찾기가 IDE에서 지원됩니다.

Spring Data 저장소에서 사용되는 @NamedQuery 지원 개선

Spring Data 저장소에서 사용되는 @NamedQuery 지원 개선
Ultimate

Spring Data JPA 프로젝트에서 @NamedQuery로 선언된 쿼리에 Query method completion(쿼리 메서드 완성)을 사용할 수 있습니다. 또한 여백 아이콘을 통해 @NamedQuery의 정의로 이동할 수도 있습니다.

Kotlin에 Java EE CDI 지원
Ultimate

2021.3 버전부터 Kotlin 파일에서 모든 CDI 검사를 사용할 수 있습니다. 기존에는 Java 파일에서만 지원되었던 검사입니다. 또한 Kotlin 파일에 CDI 여백 아이콘이 추가되었습니다. 해당 아이콘을 통해 삽입점, 삽입 후보, bean 메이커, disposer 메서드 및 이벤트로 쉽게 이동할 수 있습니다.

UML 클래스 다이어그램 개선
Ultimate

Java와 Kotlin에서 UML 클래스 다이어그램의 모든 프로세스 속도가 빨라졌습니다. 다이어그램 열기, 카테고리 전환, 확대/축소 및 기능 실행 취소/재실행 기능에 소요되는 시간이 훨씬 단축되었습니다. 주목할 만한 기타 변경 사항은 새로운 그리드, 멤버 강조 표시 및 빠른 문서 미리보기 팝업 등입니다.

다이어그램의 모양을 조절하려는 경우 컨텍스트 메뉴를 사용한 후 Appearance(모양)를 선택합니다.

데이터베이스 도구

데이터 에디터 집계

데이터 에디터 집계
Ultimate

일정 범위의 셀에 대해 Aggregate(집계) 뷰를 표시하는 기능을 추가했습니다. 오랫동안 기다려온 이 기능은 데이터 관리에 도움을 주고 추가 쿼리를 작성해야 하는 수고로움을 덜어줍니다. 이를 통해 데이터 에디터가 Excel 및 Google 스프레드시트와 더욱 유사해지고, 더 강력해지고 사용하기 쉬워졌습니다.

뷰를 보려는 셀 범위를 선택한 다음 마우스 오른쪽 버튼으로 클릭하고 Show Aggregate View(집계 뷰 표시)를 선택하면 됩니다.

DDL 데이터 소스와 실제 데이터 소스 매핑

DDL 데이터 소스와 실제 데이터 소스 매핑
Ultimate

이번 릴리스는 이전 릴리스의 자연스러운 연장으로, 실제 데이터 소스를 기반으로 DDL 데이터 소스를 생성하는 기능이 도입되었습니다. 이제 이 워크플로가 완전히 지원됩니다. 사용자는 다음 작업을 수행할 수 있습니다.

  • 실제 데이터 소스에서 DDL 데이터 소스를 생성합니다(2021.2 발표 참조).
  • DDL 데이터 소스를 사용하여 실제 데이터 소스를 매핑합니다.
  • 이러한 데이터 소스를 양방향으로 비교하고 동기화합니다.

참고로, DDL 데이터 소스는 스키마가 일련의 SQL 스크립트에 기반을 둔 가상 데이터 소스입니다. 버전 관리 시스템에 이러한 파일을 저장하는 것은 VCS에서 데이터베이스를 관리하는 한 가지 방법입니다.

데이터 구성 프로퍼티의 새 탭인 DDL mappings(DDL 매핑)에서 각 DDL 데이터 소스에 매핑되는 실제 데이터 소스를 정의할 수 있습니다.

DDL 데이터 소스와 실제 데이터 소스 매핑

새 데이터베이스 Diff 창
Ultimate

컨텍스트 메뉴에서 새로운 Database Diff(데이터베이스 Diff) 창을 사용할 수 있습니다. 이 창은 UI가 향상되어 동기화를 수행한 후 얻을 수 있는 결과가 오른쪽 패널에 더 명확하게 표시됩니다.

오른쪽 창의 범례는 잠재적 결과에 대한 색상의 의미를 보여줍니다.

  • 녹색 및 기울임꼴: 객체가 생성됩니다.
  • 회색: 객체가 삭제됩니다.
  • 파란색: 객체가 변경됩니다.

Script preview(스크립트 미리보기) 탭에는 새 콘솔에서 열거나 이 대화상자에서 실행할 수 있는 결과 스크립트가 표시됩니다. 이 스크립트의 결과는 변경 사항을 적용하여 오른쪽(대상)의 데이터베이스를 왼쪽(소스)의 데이터베이스 복사본으로 만듭니다.

Script preview(스크립트 미리보기) 탭 외에도 하단 창에는 Object Properties Diff(객체 프로퍼티 Diff)DDL Diff의 두 가지 탭이 더 있습니다. 여기에는 원본과 대상 데이터베이스에서 객체의 특정 버전 간의 차이가 표시됩니다.

내부 검사 수준

내부 검사 수준
Oracle
Ultimate

Oracle 데이터베이스에 대한 세 가지 내부 검사 수준을 도입했습니다.

  • 수준 1: 색인 열 및 private 패키지 변수의 이름을 제외한 지원되는 모든 객체 및 해당 시그니처의 이름
  • 수준 2: 소스 코드를 제외한 모두
  • 수준 3: 모두

내부 검사는 수준 1에서 가장 빠르고 수준 3에서 가장 느립니다. 컨텍스트 메뉴를 사용하여 내부 검사 수준을 적절하게 전환하세요.

내부 검사 수준은 스키마 또는 전체 데이터베이스에 대해 설정할 수 있습니다. 스키마는 데이터베이스에서 내부 검사 수준을 상속하지만 독립적으로 설정할 수도 있습니다.

내부 검사 수준은 데이터 소스 아이콘 옆에 있는 알약 모양의 아이콘으로 표시됩니다. 알약이 더 많이 채워질수록 수준이 높습니다. 파란색 아이콘은 내부 검사 수준이 직접 설정되었음을 의미하고, 회색 아이콘은 상속되었음을 의미합니다.

QA 도구

페이지 객체 에디터

Selenium 페이지 객체 편집

대규모 업데이트를 통해 Selenium에서 UI 테스트 자동화가 지원됩니다. 시각적 에디터를 활용하여 기존 페이지 객체 클래스를 유지할 수 있습니다. 이전에는 새 페이지 객체 클래스 생성만 가능했으나 이제 시각적 에디터 없이 기존 페이지 객체 클래스를 바로 업데이트할 수도 있습니다. IntelliJ IDEA는 페이지 객체 클래스를 자동으로 탐지하고 그에 대응하는 아이콘으로 여백 패널에 표시합니다. 사용자는 여백 패널을 클릭하여 시각적 에디터를 열고, 페이지 객체 클래스에 추가할 새 요소를 가져올 수도 있습니다.

테스트 데이터

테스트 데이터

Test Automation Kit의 최신 플러그인은 몇 가지 사소한 버그 수정뿐 아니라 여러 데이터 제너레이터 설정의 유용한 기능도 제공합니다. 이제 여러 줄로 구성된 정의를 사용하여 접두사, 접미사 및 구분자를 수정할 수 있습니다.

테스트 관리

테스트 실행 계층 구조

다중 레벨 테스트 실행을 위한 지원이 구현되었습니다. 이제 특정 기능 도메인 또는 테스트 유형에 따라 여러 개의 하위 테스트 실행을 생성할 수 있습니다. 각 상위 테스트 실행을 통해 하위 테스트 실행의 결과가 집계되고 모든 관련 하위 테스트 실행을 요약한 통계가 제공됩니다.

공유 단계

'로컬 TMS' 기능을 사용해 Markdown 파일에서 테스트 케이스를 관리하기로 선택하면 테스트 단계를 쉽게 선언하고 여러 테스트 케이스 간 공유할 수 있습니다. 공유 단계는 고유한 숫자 ID가 있는 일반 테스트 케이스로 선언됩니다. 해당 테스트 케이스를 다른 테스트 케이스에서 참조할 수 있으며, IntelliJ IDEA는 테스트 버전, 테스트 실행 또는 자동 테스트를 위한 코드 템플릿을 생성할 때 참조된 테스트 케이스 단계를 대체합니다.

Kubernetes

Helm 템플릿 서식 지정 개선

Helm 템플릿 서식 지정 개선
Ultimate

Helm 템플릿의 서식을 지정하고 올바른 결과가 나오도록 할 수 있습니다. 모든 관련 문제가 수정되어 훨씬 더 안정적인 서식 지정 기능이 제공됩니다. 개선 사항을 확인하려면 Code(코드) | Reformat code(코드 서식 다시 지정) 또는 Reformat file(파일 서식 다시 지정)로 이동하거나 ⌥⌘L(macOS) 또는Ctrl+Alt+L(Windows 및 Linux)을 누르면 됩니다.

Helm 템플릿의 블록 요소 강조 표시

Helm 템플릿의 블록 요소 강조 표시
Ultimate

Helm 템플릿의 if, else, range, withdefine 등 블록 요소에 대한 강조 표시 기능이 추가되었습니다. 이제 Go 템플릿 통합이 포함된 코드를 훨씬 더 쉽게 사용할 수 있습니다.

ConfigMap 리소스에서 언어 삽입

ConfigMap 리소스에서 언어 삽입
Ultimate

.yaml, .json, .properties 같은 확장자를 가진 키의 ConfigMap 리소스에서 다양한 언어의 자동 코드 삽입이 지원됩니다. 삽입된 코드 조각은 녹색으로 강조 표시되며, 해당 코드 조각 내부에서 코드 완성, 오류 강조 표시 등의 코드 분석 기능을 사용할 수 있습니다.

최근 명령어 반복 기능

최근 명령어 반복 기능
Ultimate

이제 Services(서비스) 도구 창에서 최근 helm 명령어를 다시 실행할 수 있습니다. 오른쪽 상단 모서리의 새 아이콘을 클릭하기만 하면 됩니다. 예를 들어, helm lint 명령어를 실행하고 완료한 후 해당 아이콘을 클릭하여 다시 실행할 수 있습니다.

Docker

Minikube에서 Docker에 연결

Minikube에서 Docker에 연결

Minikube에서 Docker 데몬에 쉽게 연결할 수 있습니다. Preferences(환경 설정)/Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포)로 이동한 후 Minikube 라디오 버튼을 누릅니다. 그러면 연결에 사용할 수 있는 탐지된 Minikube의 Docker 데몬 환경이 해당 버튼 옆의 필드에 자동으로 표시됩니다.

더욱 간편해진 연결 프로세스

더욱 간편해진 연결 프로세스

필요한 노드를 두 번 클릭하거나 새로운 단축키 ⌘Enter(macOS) 또는 Ctrl+Enter(Windows 및 Linux)를 사용하여 Docker에 더 빠르게 연결할 수 있습니다. 이 단축키를 사용하면 Start container(컨테이너 시작) 액션도 호출할 수 있습니다.

새로운 정리 액션

새로운 Clean up(정리) 액션

The new Clean up action works just like the prune terminal command. Networks, Volumes, Containers 또는 Images 노드를 마우스 오른쪽 버튼으로 클릭하여 Clean up 액션을 선택할 수 있으며, 이후 IDE에서 사용되지 않는 객체를 삭제합니다. 이 액션을 Docker 루트 노드에 적용하면 클릭 한 번만으로 불필요한 객체를 모두 정리할 수도 있습니다.

Compose V2 지원

IntelliJ IDEA supports Compose V2, which allows you to run Docker Compose commands as docker compose, instead of docker-compose (with a dash).

이 옵션을 활성화하려면 Preferences(환경 설정)/Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포) | Docker | Tools(도구)를 클릭하고 Use Compose V2(Compose V2 사용) 체크박스를 선택하세요.

이미지 레이어

이미지 레이어

Image layers allow you to track all the commands that are applied to images. 이 기능을 사용하려면 이미지를 선택하고 Layers(레이어) 탭으로 이동합니다. 해당 탭에서 명령어를 선택하면 화면 오른쪽의 Analyze image for more information(이미지를 분석하여 자세한 정보 확인) 링크를 클릭하여 각 레이어에 적용된 변경 사항을 자세히 살펴볼 수 있습니다.

컨테이너를 이미지로 저장

컨테이너를 이미지로 저장

사전 구성된 컨테이너를 나중에 사용하고 싶을 경우, 로컬에 이미지로 저장한 후 필요할 때 원격으로 사용하기 위해 푸시할 수 있습니다. Services(서비스) 도구 창으로 이동하여 컨테이너를 마우스 오른쪽 버튼으로 클릭하고 Image(이미지) | Save as a new Image(새 이미지로 저장)를 선택합니다.

레지스트리 업데이트

Docker 레지스트리에 몇 가지 변경 사항이 추가되었습니다. First off, the IDE now displays all available registries in separate nodes in the Services tool window. 이전에는 Docker Hub 레지스트리만 지원했으나, 2021.3 버전에는 GitLab(registry.gitlab.com)JetBrains Space(<username>.registry.jetbrains.space) 지원이 추가되었습니다.

Services(서비스) 도구 창에서 레지스트리 노드를 확장하고 필요한 이미지를 선택한 후 원하는 위치로 가져올 수 있습니다. IDE는 여러 개의 Docker 연결이 있는 경우 이미지를 가져올 위치를 묻습니다. 추가된 레지스트리로 이미지를 푸시할 수 있습니다. IDE는 지정된 레지스트리에서 사용 가능한 네임스페이스를 Push(푸시) 대화상자에서 자동으로 탐지하며 사용자는 드롭다운 목록에서 하나를 선택할 수 있습니다.

마지막으로 JetBrains Space, GitLabDocker Hub 레지스트리의 이미지에 이미지 완성 기능을 사용할 수 있습니다.

Podman 지원

IntelliJ IDEA now supports Podman as an alternative way to manage pods, containers, and images. Before using Podman in the IDE, configure a connection yourself.

OS에서 Podman 설치 및 구성이 완료되면 Preferences(환경 설정)/Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포) | Docker에서 TCP socket(TCP 소켓) 라디오 버튼을 누르고 필수 입력 필드를 작성하여 연결할 수 있습니다.

Space 통합

IDE에서 병합 요청 및 코드 검토 생성

이제 Space에서 프로젝트와 관련한 병합 요청 및 코드 검토를 생성할 수 있습니다. 다음과 같이 2가지 옵션이 있습니다.

  • Code Reviews(코드 검토) 도구 창 상단의 툴바에서 + 아이콘을 클릭하고 원하는 액션을 선택합니다.
  • Git 도구 창의 Log(로그) 탭에서 목록의 커밋을 마우스 오른쪽 버튼으로 클릭하고 Space | Create merge request(병합 요청 생성) 또는 Create code review(코드 검토 생성)을 선택합니다.

자세한 내용은 이 블로그 게시물을 확인하거나 아래 gif를 참조하세요.

파일을 본 것으로 표시

파일을 본 것으로 표시

코드 검토 수행 시 아직 수정하지 않은 모든 파일은 열릴 때까지 파란색 점이 표시된 상태로 유지됩니다. 따라서 중요한 변경 사항을 놓칠 염려가 없습니다. 나중에 변경 사항으로 다시 돌아가려면 컨텍스트 메뉴에서 Mark as Not Viewed(보지 않은 것으로 표시)를 선택할 수 있습니다. 이 기능은 GitHub 풀 리퀘스트에도 지원됩니다.

기타

  • 이제 IntelliJ IDEA는 Android Studio Arctic Fox, 2020.3.1을 지원합니다.
  • 완전한 코드 분석 기능, 검사 및 인텐션 액션을 포함한 Groovy 4 지원이 추가되었습니다. Additional features, such as switch expressions and sealed types, are supported as well.