CLion의 새로운 기능

CLion 2020.2는 Makefile 프로젝트를 추가하고 CMake 지원을 개선하여 다양한 C++ 프로젝트가 처리되도록 합니다. 또한 C++ 20 표준 준수가 향상되었습니다. 코드 분석이 한층 정확해져 허상 포인터 등의 더 심각한 오류를 잡아냅니다. 유닛 테스트, 코드 커버리지, 임베디드 개발 및 기타 부분도 크게 향상되었습니다.

프로젝트 모델

Makefile 프로젝트 지원

Makefile 기반 프로젝트를 개발 중이신가요? CLion의 스마트 기능을 활용해 보세요. CLion이 이제 Makefile 프로젝트 지원을 별도 설정 없이 바로 제공합니다. 최상위 Makefile이 있는 폴더를 프로젝트로 열거나 Open(열기) 대화상자에서 바로 Makefile을 지정합니다. 그러면 IDE가 make를 실행하고(실제 빌드 실행을 피하기 위해 --just-print 옵션 사용) make 명령어의 출력을 분석한 후 프로젝트를 로드합니다. 이 블로그 게시물에서 세부 정보, 알려진 제한 사항 및 JetBrains의 접근방식을 테스트한 긴 프로젝트 목록을 확인해 보세요.

간단히 둘러보기

향상된 CMake UX

향상된 CMake UX

Build, Execution, Deployment(빌드, 실행, 배포) | CMake에 있는 CMake Profile(CMake 프로파일) 설정에는 새롭게 작업된 UI가 있으며 설정에 유용한 몇 가지 팁이 추가되었습니다. 또한 CMake 프로젝트에 대한 몇 가지 액션을 이제 Find Action(액션 검색)에서 이용할 수 있으며 자주 사용하는 경우 일부 또는 전체 액션에 단축키를 지정할 수 있습니다.

  • CMake 설정
  • CMake 프로젝트 다시 로드 중지
  • CMakeCache 파일 열기

CMake 업그레이드

이제 CLion은 CMake 3.17을 번들로 제공하고 최신 기능 중 두 가지를 조기 지원합니다.

  1. Ninja Multi-Config: 이제 -G "Ninja Multi-Config" 생성기 옵션을 전달하면 모든 구성에 대해 생성된 CLion 빌드 파일을 얻을 수 있습니다(단, 임시로 CLion은 CMake 프로파일에 대해 하나의 선택된 구성만 계속 사용).
  2. CMake 사전 컴파일된 헤더: target_precompile_headers 명령어를 사용하여 헤더 파일을 대상의 PRECOMPILE_HEADERS 및/또는 INTERFACE_PRECOMPILE_HEADERS 특성에 추가하세요. CLion은 사전 컴파일된 헤더를 올바르게 처리합니다.

간단히 둘러보기

프로젝트 빌드

단일 파일 다시 컴파일

Recompile single file(단일 파일 다시 컴파일) 액션은 로컬 변경 내용을 신속하게 확인하여 개발 프로세스의 속도를 높이는 데 도움이 되는 것으로, 이제 CMake에서 사용되고 CLion에서 지원되는 Ninja 및 기타 생성기에도 이용할 수 있습니다.

또한 중요한 버그 수정 덕분에 이제 CLion은 시작시에 충돌 없이 여러 개의 서로 독립적인 프로젝트를 병렬로 빌드할 수 있습니다.

코드 분석

CLion 2020.2의 코드 분석 기능에 방대한 업데이트가 이루어져 수많은 검사의 정확도가 올라가고 더 많은 사례가 처리됩니다. 또한 이 버전에서도 이전에 Clangd 기반 엔진에 재구현되었던 데이터 흐름 분석 기능의 개선 작업이 진행되었습니다.

허상 포인터

허상 포인터

유효하지 않은 데이터를 가리키는 포인터는 런타임 문제를 일으킵니다. 일반적인 경우로는 double-freeuse-after-free의 조합이 있습니다. CLion은 이러한 허상 포인터가 로컬 범위에 표시되고 포인터 산술이 연관되지 않으며 매크로가 CLion의 분석 작업을 방해하지 않는 경우 해당 포인터를 포착합니다.

단순화

단순화

Simplify code(코드 단순화) 검사가 한층 정확해지고 더 많은 사례를 처리할 수 있게 되었습니다. 이 검사는 다음 유형의 구문에서 작동합니다.

  • condition == true.
  • condition1? true : condition2.
  • if(condition1) return true; return condition2;
  • 동일한 브랜치의 구문

이러한 경우, Settings(설정) | Editor(에디터) | Inspections(검사) | C/C++ | General(일반) | Simplifiable statement(단순화 가능 구문)에서 개별적으로 구성할 수 있습니다.

절대 업데이트 되지 않는 루프 조건

절대 업데이트 되지 않는 루프 조건

이 CLion 검사는 루프 내에서 루프 조건이 업데이트되지 않는 상황을 탐지합니다. Clang-Tidy의 clang-tidy:bugprone-infinite-loop와 비슷하지만 종료점이 있는 루프에서 작동하며 람다 또는 참조가 있는 사례를 처리할 수 있습니다.

사용되지 않는 코드

사용되지 않는 코드

Unused code(사용되지 않는 코드) 검사가 대대적으로 정비되었습니다. 대표적인 변경 사항은 이제 유형 별칭에 대해, 전역 및 로컬로 정의된 using 구문에 대해 작동한다는 것입니다.

Inspection 위젯 및 Problems 뷰

Inspection 위젯 및 Problems 뷰

마지막으로, 새로운 Inspection(검사) 위젯이 도입되었습니다. 이 위젯에는 현재 파일의 경고 및 오류 수를 표시되어 여기에서 해당 문제를 간편하게 탐색할 수 있습니다. 또한 강조 표시 수준을 구성할 수도 있습니다(이전에 Hector 아이콘이라는 것으로 작업했던 방식과 동일).

Inspection 위젯을 클릭하면 Problems View(문제 뷰) 도구 창이 열립니다(View(보기) | Tool Window(도구 창) | Problems(문제)). 이 도구 창에는 현재 파일의 경고 및 오류 목록이 표시되므로 문제가 발생한 코드의 위치를 탐색하는 데 유용하며 도구 창에서 Alt+Enter 단축키를 바로 호출하여 이슈를 해결할 수도 있습니다.

C++20

올해는 새로운 언어 표준이 C++ 개발자에게 공식적으로 제공되었으며 이미 CLion에서는 해당 기능의 많은 부분이 지원되고 있습니다. 또한 CLion 2020.2의 언어 엔진은 일반적으로 C++ 20 코드에서 더 안정적으로 작동합니다.

C++20 키워드

C++20 키워드

다음과 같은 새로 추가된 키워드가 CLion 2020.2에서 코드 강조 표시 및 완성 기능을 지원받습니다.

  • char8_t
  • consteval, constinit
  • co_await, co_return, co_yield
지정된 이니셜라이저

지정된 이니셜라이저

지정된 이니셜라이저의 코드 완성이 이제 기본 클래스의 필드에서 작동합니다.

explicit(bool)

explicit(bool)

이제 C++20 explicit(bool) 구문이 올바르게 강조 표시됩니다. 또한 조건 인수에 대한 이름 힌트가 표시되며 탐색 및 리팩토링에서 지원됩니다.

이니셜라이저가 있는 범위 기반의 for

이니셜라이저가 있는 범위 기반의 for

init 구문이 있는 범위 기반의 for 루프가 지원됩니다. 이러한 지원에는 루프 내 변수에 사용할 수 있는 Rename(이름 변경) 등의 리팩토링이 있습니다.

함수 결과 제한

함수 결과 제한

Concepts를 사용하는 코드에 대한 새로운 검사가 추가되었습니다. 이 검사는 제한된 함수 호출의 결과가 로컬 변수에 할당된 경우, auto로 선언된 지역 변수를 제한하도록 제안합니다.

유닛 테스트

Doctest 지원

Doctest 지원

CLion 2020.2는 또 다른 C++용 단일 헤더 프레임워크인 Doctest에 대한 지원을 추가합니다. Doctest가 커뮤니티에서 인기를 얻음에 따라 이제 CLion에서도 지원을 시작하여 자동 테스트 탐지, 실행/디버그 구성 생성, 테스트 결과를 표시하는 편리한 기본 테스트 러너를 제공합니다. 이 주제에 관한 블로그 게시물에서 실행할 테스트 모음을 구성하는 방법을 알아보세요.
Catch2 템플릿 테스트

Catch2 템플릿 테스트

Catch2의 이러한 유형의 테스트는 이제 다른 테스트 유형과 마찬가지로 인식되고 처리됩니다.

Google Test에서 테스트 건너뛰기

Google Test에서 테스트 건너뛰기

Google Test의 GTEST_SKIP() 매크로를 사용하면 런타임 시 테스트를 건너뛸 수 있습니다. 이 기능이 이제 CLion에서도 지원됩니다.

코드 커버리지

코드 커버리지

CLion 2020.2는 Run with Coverage(커버리지로 실행) 버튼을 클릭하면 자동으로 커버리지 플래그를 추가하여 사용자 경험을 향상시킵니다. 현재 선택한 CMake 프로파일에 커버리지에 대한 컴파일러 옵션이 포함되지 않은 경우, CLion은 CMAKE_CXX_FLAGSCMAKE_C_FLAGS를 통해 전달된 커버리지 플래그를 사용하여 CMake 프로파일을 검색하고 찾을 수 없는 경우 생성합니다.

임베디드 개발: PlatformIO 플러그인

임베디드 개발을 위해 PlatformIO용 플러그인을 업데이트하여 크게 개선했습니다.

platformio.ini 파일에 강조 표시 지원

platformio.ini 파일에 강조 표시 지원

이제 PlatformIO 프로젝트 설정 파일이 올바르게 강조 표시되어 이 파일을 읽고 업데이트하기가 수월해졌습니다.

새로운 실행/디버그 구성

새로운 실행/디버그 구성

CLion의 New Project(새 프로젝트) 마법사로 새 프로젝트를 생성하면 유용하고 다양한 Run/Debug(실행/디버그) 구성이 자동으로 추가됩니다. 예를 들어 _PROGRAM, _MONITOR, _CLEAN, _TEST 등의 구성이 있습니다.

PlatformIO 구성용 CMake 프로파일

PlatformIO 구성용 CMake 프로파일

이제 CLion은 PlatformIO CMake 프로젝트의 CMAKE_CONFIGURATION_TYPES 항목에 대한 CMake 프로파일을 생성합니다.

VCS

WSL2에 설치된 Git

WSL2에 설치된 Git

WSL2 툴체인으로 개발하고 WSL2에서 Git을 사용하는 경우 CLion에서 이제 프로젝트 위치에 따라 Git 실행 파일 간 전환할 수 있습니다. CLion은 \\wsl$ 경로를 통해 열려 있는 프로젝트에 대해 WSL2 기반의 Git 실행 파일을 자동으로 탐지하고 그와 호환되도록 모든 Git 관련 기능을 전환합니다.

GitHub Pull 요청

GitHub Pull 요청

CLion 2020.2는 공간이 넉넉한 새로운 GitHub pull 요청 뷰를 도입했습니다. 이 뷰는 특정 pull 요청의 모든 세부 정보(메시지, 브랜치 이름, 작성자, 담당자, 변경된 파일, 커밋, 타임 라인 등)와 커밋 전 검사 결과를 표시합니다. 또한 IDE 내에서 검토 시작, 검토 요청, 코멘트 첨부 또는 pull 요청 병합 등의 다양한 액션을 수행할 수 있도록 도와줍니다.

자세히 알아보기

선언 또는 사용 위치로 이동

선언 또는 사용 위치로 이동

Go to Declaration or Usages(선언 또는 사용 위치로 이동) 액션(Ctrl+Click / Ctrl+B)은 상황과 IDE 설정에 따라 다르게 작동합니다.

  • 심볼의 사용 위치에서 호출되면 해당 사용 위치의 선언으로 이동합니다.
  • 선언에서 호출되면 선언의 사용 위치 목록을 표시합니다.
  • 정의에서 호출되면 관련 선언 또는 사용 위치를 표시합니다. 이 동작은 Settings(설정) | Editor(에디터) | General(일반) | Go to Declaration or Usages의 설정에 따라 달라집니다.

성능 개선 사항

몇 가지 UI 멈춤 현상 및 속도 저하 문제가 수정되었습니다. 에디터의 성능 저하를 막기 위해 이제 CLion은 매크로 정의 내에서 Enter를 누를 시 백슬래시를 삽입합니다. 매크로 정의는 새 줄에서 계속될 가능성이 매우 크므로 IDE가 중복적으로 재분석하는 작업을 방지할 수 있습니다.

Rust 플러그인 업데이트

Rust 플러그인 업데이트

이 플러그인의 0.3 버전에서는 현재까지 실험된 매크로 확장 기능을 위한 새로운 엔진이 기본적으로 활성화되어 있습니다. 이 엔진은 매크로로 생성된 impl 블록 및 모듈 선언을 처리하며 tokioasync-std 등의 크레이트(crates)를 포함해 코드 전체에 대한 코드 인사이트를 제공합니다. 자세한 내용은 이 블로그 게시물에서 확인하세요.

또 다른 주요 업데이트로는 Rust의 MSVC 툴체인에 대한 조기 디버거 지원이 있습니다. 이제 CLion에서 번들로 제공되는 Visual Studio 툴체인용 LLDB 기반 디버거를 사용하면 Rust의 MSVC로 Windows에 빌드된 Rust 코드를 디버그할 수 있습니다.

다른 개선 사항으로는 새로운 리팩토링(파일 및 최상위 항목 Move(이동)Introduce Constant(상수 삽입)), or_patterns 조기 지원, println!과 같은 매크로 내의 형식 리터럴에서 오류 강조 표시, 에디터에서 문서 렌더링, 체인 메소드 호출에 대한 인레이 힌트, IntelliJ IDEA의 디버거 워크플로 개선이 있습니다.

자세히 알아보기

기타 개선 사항

  1. JetBrains가 유지관리하는 Microsoft Visual Studio C++ 툴체인용 LLDB 기반 디버거가 크게 개선되었습니다. 가장 주목할 만한 점은 디버그 세션이 더 이상 정지 시 멈추지 않고, 스레드가 해당 진입점 함수에 따라 자동으로 이름이 지정되고, 디버거의 성능이 대폭 향상되었으며 다양한 멈춤 및 충돌 현상이 수정되었다는 것입니다.
  2. 업데이트된 GDB STL 프리티 프린터가 CLion 2020.2에서 번들로 제공됩니다.
  3. 이제 Clangd 기반 엔진이 CLion의 디폴트 언어 엔진이 되어 이를 끄는 옵션이 제거되었습니다. Settings(설정) | Languages & Frameworks(언어 및 프레임워크) | C/C++ | Clangd에는 사용 중인 LLVM Clang 개정 버전에 대한 정보가 포함되므로 C++ 지원 및 기본 Clang-Tidy 검사에서 기대할 수 있는 기능을 확인할 수 있습니다.

CLion 2020.1의 새로운 기능

임베디드 개발

IAR 툴체인

IAR 툴체인

임베디드 프로젝트에 IAR 컴파일러/툴체인을 사용한다면 이제 CLion에서도 해당 기능이 지원됩니다. 이제 컴파일러 정보를 원활하게 수집할 수 있습니다. 즉, IAR 툴체인을 사용한 프로젝트가 CLion에서 성공적으로 로드되고 작동합니다.

참고:

  • MinGW 필요
  • IAR 임베디드 작업 환경에서 CMake 활용 시 유용한 팁.
PlatformIO

PlatformIO

차세대 에코시스템 PlatformIO의 인기가 빠르게 증가하고 있습니다. 임베디드 프로젝트에서 PlatformIO를 활용하려면 새롭게 출시된 CLion 플러그인 PlatformIO를 사용해 보세요. 주요 혜택은 다음과 같습니다.

  • New Project(새 프로젝트) 마법사에 PlatformIO 프로젝트 유형 추가
  • 적합한 PlatformIO CMake 기반 프로젝트 생성
  • 디버그와 업로드에 대한 구성을 자동으로 생성
  • CLion에서 PIO 통합 디버거를 활용한 온칩 디버그 지원

기타 다양한 기능을 포함한 자세한 내용은 공식 문서에서 확인하세요.

CUDA 지원

코드 구문 분석 및 코딩 지원

모든 CUDA 전용 확장자를 비롯하여 CUDA C 및 C++에 포함된 코드에 구문 분석 및 강조 표시가 올바르게 적용됩니다. 이는 코드 탐색, 코드 문서 및 기타 코딩 지원이 CUDA 코드에서 작동한다는 것을 의미합니다. 그뿐 아니라 CLion에는 커널 호출의 대괄호 완성 기능도 지원됩니다.

GitHub의 ClaraGenomicsAnalysis 프로젝트를 복제하고 CLion이 제공 가능한 CUDA 지원을 확인해 보세요.

새 프로젝트 마법사

새 프로젝트 마법사

CLion 새 프로젝트 마법사가 업데이트되었습니다. 이제 라이브러리 혹은 실행 파일로 구성된 CUDA 프로젝트 생성 옵션이 지원됩니다. 이 옵션을 선택하면 CMakeLists.txt 및 main.cu 샘플 파일이 생성됩니다.

파일 확장자 및 CMake 대상

파일 확장자 및 CMake 대상

CUDA 파일 확장자 업데이트를 확인해 보세요. 이제 새로운 C/C++ 파일 생성 대화상자에서 .cu.cuh 확장자를 사용할 수 있습니다. 또한 대화상자에서 업데이트할 수 있는 대상 목록에는 일반 CMake 및 CUDA 전용 대상이 모두 포함됩니다(cuda_add_executablecuda_add_library 명령어로 생성).

자세히 알아보기

Windows 개선 사항

Clang-cl

Clang-cl

이제 Windows CLion에서 clang-cl을 사용할 수 있으며, 이 기능은 버전 8.0 이상에서 지원됩니다.

LLVM 웹사이트에서 설치하거나 Visual Studio 도구와 함께 설치 가능합니다. 설치가 완료되면 CLion에서 Visual Studio 툴체인을 선택하고 툴체인 설정에서 clang-cl.exe을 지정합니다.

Visual Studio C++ 툴체인용 디버거

Visual Studio C++ 툴체인용 디버거

이제 JetBrains가 개발한 Visual Studio C++ 툴체인용 LLDB 기반 디버거가 해당 툴체인의 기본 디버거로 제공되어 별도 설정 없이 바로 사용하실 수 있습니다!

기본 시각화 도우미에 대한 번들 지원을 활성화하려면 Settings | Build, Execution, Deployment | Debugger Data Views | Enable NatVis renderers for LLDB를 사용하세요.

실행 및 디버그 구성

원격 및 임베디드 GDB의 사용자 지정 대상

원격 및 임베디드 GDB의 사용자 지정 대상

이제 원격 GDB 서버임베디드 GDB 서버 구성이 사용자 지정 대상과 작동합니다. 이전에 CMake 대상에서만 작동한 이 구성을 사용하면 로컬 시스템에서 실행중인 CLion 인스턴스의 원격 호스트 또는 마이크로 컨트롤러에서 애플리케이션을 디버깅 할 수 있습니다.

이미 해당 구성을 생성한 경우 CLion 2020.1 버전은 프로젝트 폴더의 projectFilesBackup 디렉토리에 이전의 실행/디버그 구성 설정을 저장하고 이것에 대해 알려줍니다.

실행/디버그 구성에서 매크로 및 경로 변수 지원

실행/디버그 구성에서 매크로 및 경로 변수 지원

이제 CMake, 사용자 지정 빌드 및 Gradle Native 애플리케이션 구성의 Program Arguments(프로그램 인수) 및 Working Directory(작업 디렉토리) 필드에서 Path Variables(경로 변수)와 매크로를 사용할 수 있습니다. 매크로를 사용하면 다음 값의 확인이 가능합니다.

  • 현재 CMake 실행 구성 빌드 디렉토리.
  • 현재 CMake 실행 구성 생성 디렉토리.
  • 프로젝트 파일 디렉토리.
  • 기타 등등.

구성 실행/디버그 시 파일 선택 대화상자 또는 스트링 입력 대화상자를 표시하는 데 FilePrompt/Prompt 매크로를 사용할 수 있습니다.

경로 변수는 프로젝트에서 광범위하게 사용되지만 프로젝트 디렉토리 외부에 위치한 라이브러리 경로를 정의할 수 있습니다.

입력 리디렉션

입력 리디렉션

이제 입력 내용을 파일에서 애플리케이션 stdin으로 리디렉션하는 기능이 추가되었습니다. Redirect input from(다음에서 입력 리디렉션)라는 구성의 새 필드를 사용하세요.

  • 상대 경로(CLion은 작업 디렉토리 경로를 추가합니다).
  • 절대 경로(원격 구성을 위해 다시 매핑됩니다).
  • 또는 매크로(예: FilePrompt).

Clang 도구

Clangd DFA

Clangd DFA

CLion 데이터 흐름 분석(DFA)은 컴파일러가 일반적으로 수행할 수 없는 기능을 제공합니다. 즉, 코드 사이의 데이터 흐름을 분석하여 그 결과를 기반으로 잠재적 문제를 탐지합니다. DFA를 사용하면 항시 false/true인 조건문, 무한 루프, 누락된 반환문, 무한 재귀 등을 파악할 수 있습니다. 또한 2020.1 버전의 DFA는 Clangd 기반 언어 엔진을 사용하므로 성능면에서 보다 정확하고 훨씬 가볍게 작동합니다. 아직 개발 중인 기능이지만 탁월한 결과물을 확인하실 수 있습니다!

Clangd 전용 코드 완성

Clangd 전용 코드 완성

Clangd 기반 언어 엔진이 코드 완성 기능을 전적으로 지원하는 새 모드가 기본으로 제공됩니다. 이 모드는 여러 엔진이 함께 사용될 시 코드 완성 결과에서 발생 가능한 우선 순위 지정 및 순서 문제를 해결합니다. Settings(설정)| Languages & Frameworks(언어 및 프레임워크) | C/C++ | Clangd에서 Code Completion(코드 완성)에서 설정하실 수 있습니다.

이 모드는 다양한 수정 및 개선 사항을 통해 더욱 정확하고 강력하게 완성됩니다.

자세히 알아보기

ClangFormat

ClangFormat

이제 프로젝트 루트에 .clang-format 구성 파일이 있는 프로젝트를 처음으로 열 때, CLion이 해당 파일을 탐지하여 ClangFormat으로 자동 전환합니다.

.clang-format 구성 파일이 포함되지 않은 프로젝트에서 ClangFormat을 활성화하면 CLion은 .clang-format 생성을 제안합니다.

Clang-Tidy

Clang-Tidy

프로젝트에서 .clang-tidy 구성 파일이 탐지되면 CLion은 Clang-Tidy IDE 설정의 사용을 자동으로 비활성화합니다. Settings(설정) | Editor(에디터) | Inspections(검사) | C/C++ | General(일반) | Clang-TidyPrefer .clang-tidy files over IDE settings(IDE 설정보다 .clang-tidy 파일 우선 사용)에서 이 기능을 관리하세요.

서식 지정 도구 및 코드 접기

새로운 이름지정 설정

새로운 이름지정 설정

이제 구조체 멤버 필드 및 클래스 멤버 필드의 이름 지정을 독립적으로 설정할 수 있습니다. Settings(설정) | Editor(에디터) | Code Style(코드 스타일) | C/C++ | Naming Convention(이름 지정 규칙)에서 업데이트된 설정을 확인하세요.

코드 접기

코드 접기

CLion에서 #pragma region#pragma endregion을 사용하여 코드접기를 할 수 있습니다.

리팩토링 업데이트

리팩토링 업데이트

Change Signature(시그니처 변경) 리팩토링(Ctrl+F6) 호출 시 CLion은 함수의 모든 사용 위치를 업데이트합니다. Change Signature(시그니처 변경) 대화상자의 새 기본값 필드를 활용하면 모든 사용 위치의 매개변수 값 지정이 가능합니다. 이전처럼 매개변수 값을 기본값 유형으로 사용하려면 해당 필드를 비워두세요.

Create Parameter From Usage(사용 위치에서 매개변수 생성) 빠른 수정 및 Add Parameter to Constructor(생성자에 매개변수 추가) 인텐션에도 동일한 로직과 새 기본값 필드가 적용됩니다.

에디터

빠른 문서

빠른 문서

문서 미리보기 및 함수 시그니처, 추론 유형, 매크로 치환 관련 정보가 표시되는 포괄적 문서 미리보기 도구인 빠른 문서 보기 기능이 이제 마우스로 가리키는 것만으로 지원됩니다.

Settings(설정) | Editor(에디터) | Code Editing(코드 편집) 으로 이동하여 Show quick documentation on mouse move(마우스 이동 시 빠른 문서 표시)에서 이 기능을 관리하세요.

JetBrains Mono 및 IntelliJ Light

JetBrains Mono 및 IntelliJ Light

에디터 기본 글꼴로 JetBrains에서 개발한 새로운 오픈 소스 글꼴인 JetBrains Mono가 제공됩니다. JetBrains Mono는 코드를 한결 쉽게 읽을 수 있도록 특별히 설계되었습니다.

새로운 기본 light 테마인 IntelliJ Light를 살펴보세요. 이제 모든 운영 체제에서 표준 테마로 지원됩니다. View(뷰) | Quick Switch Scheme(빠른 전 구성) | Theme(테마)에서 다른 테마를 선택할 수 있습니다.

터미널 세션 분할

터미널 세션 분할

CLion 2020.1에서는 터미널 세션을 수직 또는 수평으로 분할하여 나란히 실행할 수 있습니다. 분할된 터미널 세션을 생성, 탐색 및 종료하려면 터미널의 컨텍스트 메뉴를 실행하세요.

버전 관리

커밋 도구 창 및 커밋 대화상자

새로운 커밋 도구 창

업데이트된 도구 창에서 수정된 파일 및 Diff 목록이 더욱 넓은 공간에 표시됩니다. 또한 준비가 되면 커밋에 변경 사항을 추가하고, 커밋 메시지를 반복적으로 구성하며 스테이징된 변경 사항이 어떤 커밋에 포함될지를 선택할 수도 있습니다.

새로운 UI는 신규 사용자에게 기본적으로 제공됩니다. 기존 사용자는 Settings(설정) | Version Control(버전 관리) | Commit (커밋)에서 전환할 수 있습니다.

Interactively Rebase from Here

대화형 대화상자가 업데이트되어 다음 같은 기능을 제공합니다.

  • 브랜치의 각 커밋에 수행하고자 하는 액션 선택.
  • 적용된 액션을 표시하는 그래프 확인.
  • 커밋 세부 사항 확인.
  • Diff를 확인하고, 필요한 경우 검토하거나 변경사항을 재설정

IDE에서 Git 설치

이제 버전 관리 도구 창을 Git 도구 창이라는 새로운 이름으로 선보입니다. Git 대신 다른 도구를 사용할 경우 Subversion/Mercurial/Perforce 도구 창이 지원됩니다.

수동으로 Git을 사전 설치할 필요가 없습니다! Git을 사용하여 프로젝트를 열거나 VCS에서 프로젝트를 불러올 때 기기에 Git이 설치되지 않았다면 CLion이 Git 다운로드 및 설치를 제안합니다.

Rust 플러그인 업데이트

Rust 플러그인 업데이트

IntelliJ Rust는 향상된 LLDB 지원으로 열거형 또는 기본형을 적절히 렌더링할 수 있습니다. 또한 호출 스택에 디맹글링된 함수 이름도 표시합니다.

플러그인의 다른 주요 업데이트 사항은 REPL 통합입니다. Tools(도구) | Rust REPL에서 해당 콘솔을 호출하여 프로토타입을 만들때나 한 줄씩 코드를 확인할 때 사용하세요. 이번 통합으로 구문 강조 표시 및 코드 완성 기능이 추가되었으며, 명령어 사용 기록, 줄 바꿈, 하단까지 빠른 스크롤 등의 유용한 콘솔 액션도 함께 제공됩니다.

언어 지원의 경우, IntelliJ Rust는 유형 별칭에 대한 impl 블록을 지원합니다. 성능을 고려하여 이 기능은 별칭 개수가 제한된 유형에서만 사용할 수 있습니다.

기타 개선 사항에는 사용하지 않는 로컬 변수 강조 표시, cfg 속성 지원 수정, 새로운 Lift return 검사 등이 있습니다.

기타 개선 사항

  • 이제 모든 원격 구성에서 일반 및 통합 SSH 구성 UI를 사용할 수 있습니다. 새로운 SSH 구성이 발생한 위치(원격 툴체인 설정 또는 원격 GDB 서버 구성)에 관계없이 Settings(설정) | Tools(도구) | SSH Configurations(SSH 구성)에서 설정 가능합니다.
  • 소스 코드에 온전히 집중하고 싶다면 집중력 분산 방지 모드전체 화면 모드를 결합하여 새롭게 탄생한 Zen 모드를 활용해 보세요. 이 모드는 View(뷰) | Appearance(모양) | Enter Zen Mode(Zen 모드 실행)에서 설정할 수 있습니다.

CLion 2019.3의 새로운 기능

향상된 IDE 성능

이번 CLion 릴리스에서는 품질 향상을 목표로 하여 전체적으로 다양한 성능 개선을 이루었습니다. 주요 개선 대상은 코드 완성, Rename(이름 변경) 리팩토링, 심볼 빌드/업데이트 단계 최적화, UI 멈춤 현상 해결입니다.

자세히 알아보기

Clangd 기반 코드 완성

Clangd가 CLion의 코드 완성 제공자 목록에 추가되어 수많은 프로젝트에서 첫 번째 결과가 표시되는 시간이 크게 단축되었습니다. JetBrains에서 정리한 자세한 성능 측정 항목을 확인해 보세요.

리팩토링

빨라진 이름 변경 리팩토링

CLion의 Rename(이름 변경) 리팩토링은 코드의 사용 위치뿐만 아니라 문자열 리터럴과 주석 내 사용 위치에서도 이름을 변경하므로 정말 강력합니다. 그러나 여전히 코드의 사용 위치에서만 이름을 변경하고 싶은 경우, 이제 CLion에서 실제 검색을 진행하기 전에 변경 범위에 관해 사용자에게 질문하므로 속도가 한결 빨라집니다. 이 기능을 사용하려면 Settings(설정) | Editor(편집기) | General(일반) | Refactorings(리팩토링) | Enable in-place mode(전체 위치 모드 사용)비활성화하세요.

Ninja 및 기타 CMake 생성기 지원

Ninja 생성기

CMake File API가 새로 지원되어 CLion 2019.3에서 다양한 CMake 생성기를 사용할 수 있게 되었습니다(CMake 3.15 이상 필요). 이전에는 Makefile만 지원되었지만 이제 Ninja, Xcode, Visual Studio 등을 선택할 수 있습니다.

이는 모든 플랫폼, 원격 모드, WSL에서 작동합니다.

자세히 알아보기

CMake 기본 설정

CMake 기본 설정

이제 하나 이상의 기본 CMake 프로파일을 구성해 모든 새 프로젝트에서 사용할 수 있어, 새 CLion 프로젝트의 구성 프로세스가 간편해집니다. File(파일) | Other Settings(기타 설정) | Settings for New Projects…(새 프로젝트 설정)을 사용해 보세요.

기타 CMake 지원의 개선 사항은 다음과 같습니다.

  • 다른 CMake 구성이 실패하더라도 유효한 구성을 다시 로드할 수 있습니다.
  • CMake 3.15는 CLion 2019.3에서 번들로 제공됩니다.
  • 사용 중인 컴파일러가 -fpch-preprocess 플래그를 지원하지 않아도 프로젝트는 CLion 2019.3에서 성공적으로 로드됩니다. 자세한 내용은 이 블로그 게시물에서 확인하세요.

디버거

원격 gdb

원격 GDB 서버

로컬로 실행 중인 CLion에서 원격 시스템의 실행 파일을 디버그하려는 경우 이제 원격 GDB 서버 구성을 사용할 수 있습니다. CLion이 gdbserver에서 실행 파일을 업로드하고 프로그램을 시작하므로 수동으로 작업할 필요가 없습니다.

자세히 알아보기

lldb_printers

LLDB 9 및 향상된 프리티 프린터

CLion 2019.3에서는 번들로 제공되는 macOS 및 Linux용 LLDB가 v9.0으로 업데이트되었습니다. 이 외에도 번들로 제공되는 LLDB 프리티 프린터에서 대대적인 수정 작업을 진행하여 모든 관련 문제를 해결했습니다.

libc++ 및 libstdcxx가 macOS 및 Linux에서 처리되는 방식 확인하기

lldbinit

프로젝트 루트에서 .gdbinit/.lldbinit 읽기

특정 프로젝트에서 GDB/LLDB 디버거 동작을 사용자 지정하려는 경우, 이제 CLion에서 프로젝트 루트 디렉터리에서 설정 파일 읽기를 지원하므로 이 작업을 수행할 수 있습니다.

단, 이 동작을 활성화하려면 홈 파일에서 명시적으로 허용해야 합니다. LLDBGDB에서 이 기능을 수행하는 방법을 확인해 보세요.

C++20의 Concepts

Clangd 기반 코드 완성

C++20의 탁월한 기능 중 하나는 단연코 Concepts입니다. JetBrains는 Clang에서의 Concepts 지원을 저작한 전문가와 협업하여 CLion 2019.3에 Concepts를 도입했습니다. 이 지원에는 코드 구문 분석 및 강조 표시(Clangd 기반 언어 엔진에서 수행됨)와 함께 다음 기능이 제공됩니다.

  • 사용되지 않는 Concept 검사
  • 코드 완성 기능(std::is_base_of<MyBase, T>std::is_same<Other, T>으로 제한되는 유형에 대한 코드 완성 지원 포함)
  • Rename(이름 변경) 리팩토링
  • Go to Definition(정의로 이동) 및 Find Usages(사용 위치 검색)

자세히 알아보기

코드 분석

가상 호출

생성자/소멸자에서 호출된 가상 함수

아직 초기화되지 않았거나 이미 삭제된 리소스에 가상 함수가 액세스하는 상황을 방지하기 위해 생성자 또는 소멸자에서 호출된 가상 함수를 탐지하는 새로운 검사가 CLion에 추가되었습니다.

Doxygen 철자

철자 검사기

철자 검사기는 코드를 정확하고 읽기 쉽게 관리하는 데 유용합니다. CLion은 오랫동안 C/C++ 코드에 이 기능을 지원해왔습니다. 2019.3 버전에서는 CMake 및 Doxygen 주석에서도 사용할 수 있습니다.

코드 커버리지

커버리지

"Was this statement executed during the configuration run?"(구성 실행 중에 이 구문이 실행되었습니까?)라는 메시지가 표시된 적이 있다는 것은 사용자가 코드를 평가할 구문 커버리지를 찾고 있다는 뜻입니다. CLion 2019.3에서는 llvm-cov/gcov 도구와의 통합으로 이 커버리지가 지원됩니다.

구문 커버리지는 유닛 테스트 실행 또는 일반 구성 실행을 진행할 때 구할 수 있습니다. 결과는 Coverage(커버리지) 도구 창 또는 편집기의 왼쪽 여백에 색상 표시를 통해 제공됩니다.

자세히 알아보기

에디터

헤더/소스로 이동 액션

헤더/소스로 이동 액션

헤더/소스 파일 간 전환을 위한 새로운 액션이 추가되었습니다. 이 액션은 다양한 C/C++ 사례에서 Go to Related Symbol(관련 심볼로 이동)보다 더 정확하고 빠르게 작동합니다.

여러 탐색 위치 옵션이 500ms 이내에 식별되면 새 항목이 추가된 대화형 팝업이 CLion에 표시되고 여기에서 원하는 탐색 위치를 선택할 수 있습니다.

원하는 경우 단축키를 Go to Related Symbol에서 이 새로운 액션으로 다시 매핑할 수 있는 기본 메커니즘도 제공됩니다.

자세히 알아보기

Microsoft

Microsoft 서식 지정 및 이름 지정 규칙

CLion에서는 일련의 서식 지정 옵션 및 이름 지정 규칙을 구성하거나 사전 정의된 스타일 중 하나에서 이러한 설정을 상속할 수 있습니다. CLion 2019.3에서는 Microsoft의 사전 정의된 서식 지정 및 이름 지정 스타일이 사전 정의 목록에 추가되었습니다.

WSL2

WSL2

Linux용 Windows 하위 시스템은 Linux 대상 플랫폼을 Windows에서 편리하게 개발할 수 있는 방법을 제공합니다. CLion은 기본적으로 WSL 환경을 지원하며 이제 WSL 버전 2도 지원합니다. 구성 프로세스는 WSL 버전 1 및 2에서 수행하는 방법과 똑같습니다.

자세히 알아보기

Rust 플러그인 업데이트

Rust

IntelliJ Rust에 적용된 가장 큰 업데이트 중 하나는 cfg 속성의 조기 지원입니다. 이제 조건부로 비활성화된 블록은 회색으로 표시되고 해결 및 코드 분석에서 제외됩니다. 지원되는 cfg 옵션 중에는 unix, windows, target_os가 있습니다.

또한, 널리 사용되는 빠른 수정과 해결되지 않은 심볼에 대한 Auto-import(자동 가져오기)가 이제 Implement members(멤버 구현), Specify type explicitly(명시적으로 유형 지정), Add remaining patterns(나머지 패턴 추가) 및 기타 코드 생성 액션을 호출할 때 자동으로 작동합니다.

기타 변경 내용으로는 이미 몇몇 릴리스의 플러그인에 포함되어온 Rust 코드용 코드 커버리지와 유형 힌트를 위한 편리한 대화형 인레이, include! 매크로 지원이 있습니다.

기타 변경 내용

  • VCS 지원: Clone(복제) 대화상자(VCS | Get from Version control(버전 관리에서 가져 오기))가 재작업되었습니다. 이제 대화상자에서 로그인할 수 있으며, 이미 로그인한 경우 계정 또는 조직별로 그룹화된 모든 저장소 목록이 IDE에서 즉시 미리보기로 표시됩니다.
  • 스크롤바가 더 또렷하게 보이도록 설정하는 새로운 옵션이 추가되었습니다. Settings(설정) | Appearance & Behavior(모양 및 동작) | Appearance(모양) | Use contrast scrollbar(명암대비 스크롤바 사용)
  • 수많은 UI 문제가 업데이트된 JetBrains Runtime에서 해결되었습니다.