CLion 2020.3 では、待望されていたコード解析、アプリケーションの実行とデバッグ、およびユニットテストという開発プロセスの主な機能が大幅に改善されています。 組み込みプロジェクトにおいては、CLion に初期的な MISRA C および C++ サポートが導入されています。 また、Qt ユーザーは、Qt コードでの作業に対して特別に調整された IDE 機能を活用できます。
CLion 2020.3 では、ルート権限でアプリケーションを実行してデバッグできます。対応する Run/Debug 構成でこのオプションを選択するだけで可能です。 この機能は、CMake、Makefile、Gradle Native、Custom Build、および CTest アプリケーションで利用できます。
Linux と macOS で使用できる新しい Run | Open Core Dump… アクションを使うと、クラッシュしたプロセスの既存のコアダンプを CLion で開き、そこでデバッグすることができます。 ユーザーはデバッガーコンソールで、フレームと変数ビューの検査、メモリと逆アセンブリビューの確認、式の評価、およびデバッガコマンドの実行を行えます。 この機能の構成プロセスと既知の制限について続きをお読みください。
新しい Set Execution Point to Cursor アクションを使うと、デバッグ中にプログラムの実行を前に進めたり後に戻したり、ループの中止や再開、if-else
文または switch-case
文の別のブランチの選択、およびループの完全省略が可能です。 ガターにある矢印を関心のある行にドラッグアンドドロップするだけで、簡単に操作できます。
アプリケーションがデバッグモードで実行しているときに、エディタはクリック可能なインラインヒントを表示するようになりました。このヒントをクリックして展開すると、その変数に属するすべてのフィールドを確認できます。 さらに、ドロップダウンリスト内の変数値を変更したり、コードのこの場所にインラインウォッチとして任意の式を追加することができます。
CLion では、スクリプトを使用して、Run/Debug 構成が起動する環境を指定できるようになりました。 これに使用する新しい設定は、すべてのアプリケーション構成とユニットテスト構成にあります。
もう待ち続ける必要はありません! Run/Debug 構成は、プロジェクトのインデックスが作成されている間に編集できるようになりました。
CMake 固有のテストランナーである CTest が CLion でサポートされました。 つまり、CTest で実行されるテストのリストが検出されると、その Run/Debug 構成が IDE によって自動的に作成されるようになりました。 テストが起動すると、結果が組み込みのテストランナーに提示され、そこからテストをデバッグして、失敗したテストのみを返すようにするなど、行えます。
バージョン 2020.3 では、世界で最も一般的な C++ ユニットテストぐフレームワークである Google Test 向けの CLion サポートが強化されました(2020 年開発者エコシステムリサーチでは 31% の C++ 開発者が Google Test を使用していると答えました)。
DISABLED
プレフィクスが付いたもの)も対応するアイコンとともにテストツリーに表示されるようになりました。 CLion 2020.3 は、組み込み開発と特に自動車産業で広く使用されているガイドラインである MISRA C 2012 と MISRA C++ 2008 を部分的にサポートしています。 このサポートによって開発サイクルの早期において非対応状況を確認できるため、こういったプロジェクトの開発速度が高められます。 現在サポートされているチェックのリストは、CLion の Confuluence ページをご覧ください。
CLion 2020.3 では、Unused Value(未使用の値) インスペクションが改善されており、変数値が割り当てられた後で使用されていない状況を検出することができるだけでなく、 デフォルトの変数イニシャライザーの使用を推奨するスタイルに従うように調整できるようになりました。 そのような場合にインスペクションをオフにする新しいオプションが設定に追加されています。
Extract Lambda Parameter(ラムダパラメータの抽出)という新しいリファクタリングが CLion に追加されています。 このリファクタリングは、式またはステートメントを対応する引数として渡されるラムダ式とともに新しいパラメータに抽出します。 ステートメントはたとえば、並べ替え関数に渡されるコンパレータです。
新規プロジェクトのダイアログに、Qt Console Executable と Qt Widgets Executable プロジェクトタイプが推奨されるようになりました。 また、Qt CMake プレフィクスパス、プロジェクトで使用する C++ 言語標準、および Qt バージョンを選択することもできます。 新しいプロジェクトは、対応するテンプレートを使用して生成されます。
新規メニューの新しい QT UI Class 項目 (Alt+Insert) を使うと、Qt クラスと .ui ファイルを同時に作成することができます。 クラス名を入力して、親クラス(QWidget
、QMainWindow
、または QDialog
)を選択してください。 .h/.cpp/.ui ファイルは、ファイル名として Filename ベースを使用して生成されます。 生成されるファイルは、Settings/Preferences | Editor | File and Code Templatesに記載されている Qt Class、Qt Class Header、および Qt Designer Form テンプレートに従います。
シグナルとスロットは、オブジェクト間の通信に使用されるエンティティである Qt の主要機能です。 CLion では、シグナルまたはスロットを補完する必要がある場合を理解し、補完ドロップダウンの対応するメンバーのみをフィルタできるようになりました。
CLion 2020.3 では、Qt プロジェクトの自動インポートの推奨が調整されたため、最も一般的に使用されている Qt のスタイルに従うようになりました。
ccache、libtool、dolt、slibtool、および jlibtool などの様々なラッパーを使用する Makefile プロジェクトが、CLion に正しく読み込まれるようになりました。 他のいくつかの制限について続きをお読みください。
CLion での Makefile プロジェクトセットアップがさらに簡単になりました。プロジェクトを読み込むと、最上位の Makefile にあるターゲットに対し、Run/Debug 構成が自動的に作成されるようになっています。 構成をビルド実行可能ファイルにポイントするだけ、実行とデバッグを行うことができます。
Recompile アクション(Ctrl+Shift+F9)は、プロジェクト全体を構築せずに単一のファイルをコンパイルすることで開発プロセスを高速化するアクションです。 これが、Makefile プロジェクトでも動作するようになりました!
CLion 2020.3 では、複数の CMake プロファイルを CLion で構成しておき、現在使用していないプロファイルを無効にできるようになりました。 これにより、プロジェクトの読み込み時間が高速化され、一時的に利用できないプロファイル(現在シャットダウンしているリモート構成など)から重複して発生する失敗を省略できるようになりました。 このオプションは、CMake ツールウィンドウと CMake Profiles 設定ダイアログにあります。
Search Everywhere(どこでも検索)ダイアログに、Git タブが追加されました。 コミットのハッシュやメッセージ、タグ、およびブランチを検索する上で役立ちます。 また、単純な計算式を検索フィールド内で実行することもできます。
VCS メニューの名前が使用中のバージョン管理システムに応じてつけられるようになりました。 プロジェクトのバージョン管理に最も有益なものを除くすべてのアクションを除去し、メニューをより簡潔に表示するようにしました。
また、Commit と Commit and Push… という 2 つの最も一般的に使用されるボタンが Commit 画面に明示的に表示されるようになりました。
CLion から変更を直接ステージングできるようになりました。 この機能を有効にするには、 Preferences/Settings | Version Control | Git に移動して Enable staging area(ステージングエリアを有効化)チェックボックスをオンにしてください。 ファイルを Commit ビューの新しい Staged ノードに追加するには、+ アイコンをクリックします。 また、ガターや Diff ビューでも変更をステージングできます。 詳細については、ブログ記事をご覧ください。
リモートツールチェーンを予め構成しておけば、ローカルで Excluded としてマークされたディレクトリがリモートツールチェーンでも Excluded paths として自動的にマークされるようになりました。 また、変更が同期済みのプロジェクトに適用されると、CLion に更新通知が表示され、Excluded paths のリストを更新するように推奨されます。
CLion 2020.3 は JetBrains の共同開発およびペアプログラミング用の新しいサービスである Code With Me(EAP)をサポートしています。 Code With Me を使用すると IDE で現在開いているプロジェクトを他のユーザーと共有し、リアルタイムで共同作業を行うことができます。 Code With Me はプラグインマーケットプレース(Preferences / Settings | Plugins | Marketplace)からすぐにダウンロードできます。 Code With Me の詳細については、これらの記事を参照してください。
CLion 2020.3 ではようこそ画面が一新しました。 新しいレイアウトでは、最も一般的な操作はすぐにアクセスできるように配置されているため、最近のプロジェクト、カスタマイズオプション、プラグイン設定にすぐにアクセスできます。
メインのエディタウィンドウのサイドにタブをドラッグアンドドロップすると、エディタが分割されるようになりました。 Open in Right Split アクションを使うと、ファイルを開く際に、エディタが縦に分割されます。
このアクションは、Project ビュー、または Recent Files や Search Everywhere(Shift+Enter)などのナビゲーションポップアップから呼び出せます。
CLion を OS のテーマと同期させられるようになりました。 この機能を有効にするには、Settings / Preferences | Appearance & Behavior | Appearance に移動して Sync with OS(OS と同期)チェックボックスをオンにしてください。 お好みのテーマを選択するには、Sync with OS の隣にある歯車アイコンをクリックします。
IntelliJ Rust は Cargo 機能を完全サポートし、新しいスマート UI で構成できるようになりました。 ワークスペースの機能はクリック 1 つでオン・オフにでき、プラグインのコーディング支援によってこの設定が考慮されるようになります。 詳細は、こちらのブログ記事をご覧ください。
また、プラグインでは、デフォルトのコードフォーマッタとして Rustfmt を使用できるようになりました。 Settings / Preferences | Languages & Frameworks | Rust | Rustfmt で対応するチェックボックスを設定するだけで、ファイル全体の再フォーマットに Rustfmt が適用されます。 現時点では、選択に Reformat Code を呼び出すと、IDE のフォーマッタが使用されるようになっています。
プラグインのプロジェクトウィザードに、その他のテンプレートとカスタム cargo-generate テンプレートを使用するオプションが追加されて強化されています。
他には、WebAssembly プロジェクトサポートや新しい実験的な名前解決エンジンの導入といった更新があります。
CLion 2020.2 は Makefile プロジェクトに対応し、CMake のサポートを改善することで、さまざまな C++ プロジェクトをカバーします。 また、C++20 標準への準拠度が向上しています。 コード解析の精度が向上し、ダングリングポインターなどの致命的エラーをより多くキャッチできるようになりました。 ユニットテスト、コードカバレッジ、組み込み開発、その他の部分でも大幅な機能強化が行われました。
Makefile ベースのプロジェクトを開発していますか? CLion の高度な機能をご利用ください。CLion が初期状態で Makefile プロジェクトをサポートするようになりました。 最上位の Makefile があるフォルダーをプロジェクトとして開くか、Open ダイアログで直接 Makefile を指定してください。 IDE は make を(実際のビルド実行を避けるために --just-print
オプションを追加して)実行し、make コマンドの出力を解析し、プロジェクトをロードします。 詳細や既知の制限事項、および私たちがアプローチをテストしたさまざまなプロジェクトについてはこちらのブログ記事を参照してください。
Build, Execution, Deployment | CMake
配下の CMake Profile 設定の UI が刷新され、設定用の有益なヒントがいくつか表示されるようになりました。 また、CMake 対応の複数のアクションが Find Action ウィンドウに追加され、それらをたびたび使用するものにショートカットを割り当てられるようになりました。
CLion が CMake 3.17 をバンドルするようになり、最新機能のうち次の 2 つをサポートし始めました。
-G "Ninja Multi-Config"
ジェネレーターオプションを渡し、構成ごとに生成された CLion のビルドファイルを取得できるようになりました(一時的ではありますが、CLion は引き続き CMake プロファイル用に選択された構成を 1 つだけ使用します)。 target_precompile_headers
コマンドを使用すると、ヘッダーファイルを ターゲットの PRECOMPILE_HEADERS
または INTERFACE_PRECOMPILE_HEADERS
プロパティ(またはその両方)に追加できます。 CLion はこのようなコンパイル済みヘッダーを適切に処理します。 Recompile single file アクションはローカルの変更をすばやくチェックして開発プロセスの高速化を促しますが、Ninja や CMake で使用される CLion のサポート対象のその他のジェネレーターで使用できるようになりました。
重要なバグフィックスにより、CLion が複数の独立したプロジェクトを並行してビルドできるようになりました。これらのビルドが互いの起動を妨げることはありません。
CLion 2020.2 ではコード解析に大規模なアップデートが施され、多くのチェック機能で精度が向上し、より幅広いケースに対応できるようになりました。 このバージョンでは、これまで Clangd ベースのエンジンで再実装されていたデータフロー解析の改善作業も継続して行われています。
ポインターが無効なデータを参照していると、実行時に問題が発生します。 よくあるケースは、double-free と use-after-free の組み合わせです。 CLion はこのようなダングリングポインターがローカルスコープに出現し、ポインターの演算が発生せず、マクロが CLion の解析を妨げていない場合にキャッチするようになりました。
Simplify(単純化)コードインスペクションの精度が向上し、より幅広いケースに対応できるようになりました。 次の種類のステートメントに対応しています。
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 ウィジェットを導入しています。 このウィジェットは現在ファイル内の警告とエラーの数を表示し、それらの問題箇所の間を簡単に移動できるようにします。 ハイライトのレベルを調整することもできます(かつて Hector アイコンと呼ばれるもので実行できていたものと同様です)。
Inspection ウィジェットをクリックすると、Problems View ツールウィンドウが開きます(View | Tool Window | Problems
)。 このツールウィンドウは現在ファイル内の警告とエラーのリストを表示し、問題が発生したコードの位置に移動するのに役立ち、Alt+Enter のショートカットを呼び出して問題を修正する機能を提供します。
今年は公式に新しい言語標準が C++ 開発者に公開されますが、CLion はすでにその多くの機能をサポートしています。 CLion 2020.2 の言語エンジンも多くケースで C++20 のコードに対する安定性が向上しています。
新たに追加されたキーワードは、CLion 2020.2 のハイライトと補完でサポートされています。
char8_t
consteval
および constinit
co_await
、co_return
、co_yield
指示付き初期化子のコード補完が基本クラスのフィールドに機能するようになりました。
C++20 の explicit(bool)
構文が正しくハイライトされるようになりました。 また、条件引数の名前ヒントも実装され、ナビゲーションとリファクタリングでサポートされています。
for
init
ステートメントを伴う範囲ベースの for
ループがサポートされるようになりました。 サポート対象には、ループ内変数の Rename のようなリファクタリングなどがあります。
コンセプト (concepts)を使用するコードに対応した新しいインスペクションが追加されました。 このインスペクションは、制約が付与された関数の呼び出し結果がローカル変数に割り当てられている場合に、auto として宣言されたローカル変数を制約することを提案します。
Catch2 のこの種のテストタイプが他のテストタイプと同様に認識され、処理されるようになりました。
Google Test の GTEST_SKIP()
マクロは実行時にテストをスキップする機能を提供します。 このマクロが CLion でサポートされるようになりました。
CLion 2020.2 は Run with Coverage ボタンをクリックした際にカバレッジフラグを自動的に追加し、ユーザーエクスペリエンスを向上させます。 現在選択中の CMake プロファイルにカバレッジ用のコンパイラーオプションが含まれていない場合、CLion は CMAKE_CXX_FLAGS
および CMAKE_C_FLAGS
経由で渡されたカバレッジフラグを使用して CMake プロファイルを検索します(見つからない場合は作成します)。
組み込み開発向けに PlatformIO 対応のプラグインを更新し、大幅な機能改善を行いました。
PlatformIO プロジェクトの構成ファイルが適切にハイライトされるようになり、視認性が向上して編集しやすくなりました。
CLion では新しいプロジェクトが New Project ウィザードから作成されると、多くの便利な Run/Debug 構成が自動的に追加されます。 例えば、_PROGRAM
、_MONITOR
、_CLEAN
、_TEST
その他多くがあります。
CLion が PlatformIO CMake プロジェクトで CMAKE_CONFIGURATION_TYPES
用の CMake プロファイルを自動的に作成するようになりました。
WSL2 ツールチェーンで開発を行い、WSL2 上の Git を使用する際に、CLion でプロジェクトの場所に応じて Git 実行可能ファイルを切り替えられるようになりました。 また、(\\wsl$
パス経由で)開いているプロジェクト用の WSL2 にインストールされた Git 実行可能ファイルが自動検出されるため、すべての Git 関連機能を切り替えて作業することができます。
CLion 2020.2 には、新たに大きな GitHub プルリクエスト用のビューが導入されています。 このビューには特定のプルリクエストに関するすべての情報(メッセージ、ブランチ名、作成者、担当者、変更されたファイル、コミット、タイムラインなど)と、コミット前のチェックの結果が表示されます。 また、IDE 内からレビューの開始、レビューのリクエスト、コメントの追加、プルリクエストのマージなどの多くのアクションを実行できるようになっています。
Go to Declaration or Usages アクション(宣言または使用箇所に移動)(Ctrl+Click / Ctrl+B)は、次のように状況や IDE の設定によって異なる動作をします。
Settings | Editor | General | Go to Declaration or Usages
で調整できます。 UI のフリーズまたは遅延の問題がいくつか解消されました。 エディターのパフォーマンス低下を防ぐため、マクロ定義の中で Enter を押した際に CLion がバックスラッシュを挿入するようになりました。 マクロ定義は次の行に続いている可能性が非常に高いため、IDE が冗長にアクティビティを再解析せずに済みます。
このプラグインのバージョン 0.3 では、これまで実験的であったマクロ展開用の新しいエンジンがデフォルトで有効化されています。 このエンジンはマクロが生成した impl
ブロックとモジュールの宣言を処理し、tokio
や async-std
などのクレート(crates)を含むコード全体に対するコードインサイトを提供します。 詳細については、このブログ記事を参照してください。
その他の重要な更新には、Rust の MSVC ツールチェーンに対応したデバッガーの導入があります。 CLion にバンドルされた LLDB ベースのデバッガーを Visual Studio ツールチェーンに使用し、Rust の MSVC を使用して Windows 上でビルドされた Rust のコードをデバッグできるようになりました。
その他の機能強化には、新しいリファクタリング(ファイルと最上位項目の Move と Introduce Constant)、or_patterns
のサポート開始、println!
などのマクロ内フォーマットリテラルのエラーハイライト、エディター内のドキュメント表示、チェーンメソッド呼び出しのインレイヒント、IntelliJ IDEA 内デバッガーワークフローの改善などがあります。
Settings | Languages & Frameworks | C/C++ | Clangd
に使用中の LLVM Clang リビジョンの情報が表示されるようになったため、C++ のサポートと組み込みの Clang-Tidy チェックに関して期待できるものを把握できるようになります。 組み込みプロジェクトで IAR コンパイラ / ツールチェーンをお使いの場合、CLion でも同じ作業をできるようになりました。 コンパイラ情報取得時のエラーが修正されました。これにより、IAR ツールチェーンを使うプロジェクトは正常に読み込まれ、CLion を使用することができます。
特記事項:
PlatformIO は人気急上昇中の新世代エコシステムです。 組み込みプロジェクトでそのメリットを得るには、新しい PlatformIO for CLion プラグインをご活用ください。その機能は以下の通りです。
など! 詳細は公式ドキュメントをご覧ください。
CUDA に特化した拡張機能をすべて含む、CUDA C と C++ のコードが正しく解析され、ハイライトされるようになりました。 これは、コードナビゲーション、コードのドキュメント化、その他のコーディング支援アクションが CUDA コードで機能することを意味します。 また、CLion はカーネルコールの角括弧を入力することもできます。
GitHub から ClaraGenomicsAnalysis プロジェクトをクローンして、CUDA サポートの面における CLion の能力をご覧ください。
CLion の新規プロジェクトウィザードは、CUDA プロジェクト (ライブラリまたは実行可能ファイル) を作成するオプションの追加によって更新されています。 選択すると、CMakeLists.txt と main.cu のサンプルファイルが生成されます。
新しくなった C/C++ ファイル作成ダイアログでは、CUDA ファイルの新しい拡張子として .cu and .cuh がサポートされています。 このダイアログで更新する潜在的なターゲットのリストには、一般的な CMake と CUDA 固有のターゲット (cuda_add_executable
および cuda_add_library
コマンドで作成) が含まれます。
Windows 上で CLion の clang-cl を使用できるようにしました。バージョン 8.0 以降で対応しています。
LLVM ウェブサイトから、または Visual Studio ツールと一緒にインストールできます。 完了したら、CLion で Visual Studio ツールチェーンを選択し、ツールチェーン設定から clang-cl.exe を指定します。