CLion 2019.1リリース:組み込み開発、ClangFormat、メモリビュー、言語の注入(Inject)、カスタムテーマなど

CLionの今年初のメジャーアップデート、CLion 2019.1がリリースされました!

すぐにアップデートするには、Toolbox App、スナップパッケージ(Ubuntu)、当社のウェブサイト、または2018.3の最新ビルドからのパッチアップデートが利用可能です。ぜひ今すぐアップデートしてください! :)
CLion 2019.1がリリースされました!

サムライズム様によるWhat’s Newの翻訳はこちらにございます。

以前に発表したように、今年当社は主に、IDEのパフォーマンス、Clangdのさらなる活用、そして組み込み開発に重点を置いています。 今回のアップデートではその3つの分野すべてで前進しております:

詳細についてぜひこのまま読み続けて、Phil Nash(フィル・ナッシュ)によるこちらの短いWhats Newビデオ(英)をご確認ください:

JetBrainsは30日間のCLion無料体験版を用意していますので、サブスクリプションを購入する前に、これらの全機能をすべて試すことができます。

CLion 2019.1をダウンロード

 

Clangdベースの言語エンジンとのインテグレーションの強化

私たちは引き続きClangdのより広範なインテグレーションに重点を置いているため、当社は補完的なClangdベースの言語エンジンを開発することに尽力を注いでいます。 可能な限り(機能およびパフォーマンスの観点から)、このエンジンにさまざまなアクションを再実装していますが、そのようなアクションに対してはCLion独自のエンジンに切り替えるオプションもございます(現時点では)。

ユーザーの観点からは、それによりエディタの反応がよくなることがわかります。 Clangdのより広範なインテグレーションに向けて当社が取ったもう1つのステップは、Clangdを利用してクイックフィックスが必要な場所を特定するようになったことです。 つまり、Clangdベースの言語エンジンは、コード内の潜在的な違反を特定してエラーや警告を表示するだけでなく、クイックフィックスの場所を提供するためにも使用できます。 ただし、実際のクイックフィックスはCLionによって提供されることにご注意ください。
Clang fix location

一方、この2番目のステップには欠点がいくつかあり、その結果、クイックフィックスの一部は一時的に削除されました(CPP-15243)。

また、エラーアノテーターが改善され、Clangから取得されたより詳細なエラーメッセージを表示できるようになりました。 実用的な例として、Clangが置換失敗に対する詳細な理由を提供できる、失敗したオーバーロード解決のデバッグ:
Clangエラー

また、当社のC++言語サポートチームは、CLionが提供する独自のコードチェックにも取り組んでおり、それらをClangdに実装しています。 例えば、Member function can be static(メンバー関数は静的にできます)チェック。 これはメソッド本体を分析し、それがthisに依存しているかどうかを確認しようとします。
Member static

CLion独自の言語エンジンの改善

IDEパフォーマンス

Clangdベースのエンジンに取り組んでいる一方で、私たちは当社独自の言語エンジンの改善に向けても、懸命に取り組んでおります。 まず、Clangdがまだ適用できない、IDEのパフォーマンス向上を目標としております。次に、少なくとも現在の状態ではまだClangdエンジンに移行できない、リファクタリングの精度を高めることです。

新規プロジェクトを作成したり最初に開いたりする際の初期インデックスの時間を短縮させました。 つまり、プロジェクトに適している限り、CLionは最近開いた他のプロジェクト用にすでに構築されているシンボルを再利用できるようになりました。 例えば、STLまたはBoostライブラリ、あるいは現在のプロジェクトや新規プロジェクトで広く使用されているその他のカスタムライブラリを使う場合に便利な改善点です。 私たちはこの機能にさらに取り組み、今後それを拡張する予定です。

より正確なリファクタリング

私たちはリファクタリングに1つずつ取り組み、改善していましたが、今回は、Extract(抽出)に取り組む必要がありました。 結果が正確であることを確認するために、私たちはそれが、std::名前空間修飾子、テンプレートの特殊化、テンプレートパラメータ、および型エイリアスを尊重するようにしました。

また、Rename(名前の変更)リファクタリングも改善されました。 ファイルに対して呼び出されたRenameで、関連するクラス/構造体の名前変更がトリガーされずに、代わりにこのオプションをサジェストするポップアップが表示されるようになりました。 またその逆も!
Rename class

さらに、ヘッダファイルの名前が変更された際に、ヘッダガードがこのヘッダファイルで使用されている場合は、それに応じてヘッダガードも更新され、使用されるヘッダガードスタイルテンプレートにはヘッダファイル名が含まれます。

組み込み開発への第一歩

STMicroelectronicsボード用に開発している場合は、CLionがSTM32CubeMXと統合されたことを知って、とても喜ぶでしょう:

  • CLionの新しいプロジェクトウィザードは、STM32CubeMX(.ioc)プロジェクトの作成を提案してくれます。このタイプの既存のプロジェクトをCLionで開くこともできます。
  • その後、いつでもCLionから直接STM32CubeMXを起動してボード設定を更新し、コードを生成できます。
  • また、CLionは、あなたの.iocプロジェクトが正しく動作するように、対応するCMakeファイルを生成し、ボード構成を選択することも提案してくれます。

OpenOCD + STM32CubeMXプラグインを試したことがあれば、機能は非常に似ていることに気づくでしょう。私たちはこのプラグインのアップデートされたバージョンをCLionにバンドルしました。

このプラグインの2つ目の部分は、どの組み込みデベロッパーにとっても便利です。というのもこれは、 Open On-Chip Debuggerとのインテグレーションを提供しているからです。 ‘OpenOCD Download and Run’ の新しい実行/デバッグ構成テンプレートを使用して、マイクロコントローラでデバッグできます。
OpenOCD

このインテグレーションについて、または必要な設定の詳細については、この詳細なブログ記事(英語)をご覧ください。

CLionをあなたのコードスタイルに調整

ClangFormat

ClangFormatツールはC/C ++の世界で広く使用されており、多くの開発者によって標準として評価されています。 よくオープンソースプロジェクトはリポジトリに.clang-format構成ファイルを保存しています。 現在、CLionでそのようなプロジェクトを開くと、IDEは構成ファイルを検出し、ClangFormatに切り替えるように提案するようになりました。 つまり、ClangFormatは代替フォーマッタとしてCLionに統合されました! これはIDEのすべてのアクションに影響するため、それに完全に切り替えることができます。
ClangFormat

Settings/Preferences | Editor | Code Style で、ClangFormatのスイッチャーもあります。 詳細については、私たちの専用ブログ記事(英語)をご確認ください。

C/C++命名

クラスや構造体用のPascalCase、メンバー関数や変数用のcamelCase、マクロや定数用のSCREAMING_SNAKE_CASE、グローバル関数用のsnake_case、すべての列挙型の接頭辞としての ‘E’ -これら全ての命名規則。 CLionはあなたの苦痛を理解し、Settings/Preferences | Editor | Code Style | C/C++ | Naming Convention で対応する設定を提供し、すべてのコード補完、コード生成、リファクタリングアクション、およびクイックフィックスでその選択を尊重するようになりました。

事前に設定されたスキームから命名スタイル(およびその他のコードスタイル設定)を選択することもできます。Google、LLVM、Qtなどが利用可能です。 また、Inconsistent Naming(一貫性のない命名)インスペクションを有効にすると、IDEは問題のある名前について警告し、クイックフィックスを使用してより正確な名前をサジェストし、すべての使用箇所を置換することもできます。
命名規則

ヘッダガードスタイル

ヘッダファイルで通常何を使用しますか? pragma、それともヘッダガードですか?  デフォルトでは、CLionはヘッダガードを生成します(Settings/Preferences | Editor | File and Code Templates でpragmaを使用するようにヘッダファイルテンプレートを変更できます)。ヘッダガード派の方は、喜ぶと思いますが、 CLion 2019.1には、ヘッダガードスタイルを構成する新機能が追加されています:
ヘッダガード設定

このテンプレートは、Apache Velocityシンタックスをサポートし、${PROJECT_NAME}${PROJECT_REL_PATH}${FILE_NAME}${EXT}などの事前定義された変数もいくつか使用します。 より標準的なスタイルを使用したい場合は、事前定義されたスタイルオプションのどれかを選択できます(命名規則と同じように)。

カスタムビルドターゲットと実行/デバッグ構成

IDEで提供されているカスタムコマンドのようなものを使用してプロジェクトをビルドする機能が欲しいというご要望を、最近多くのユーザーから頂いております。 また、実行/デバッグ構成をカスタム実行可能ファイルに指定することで、IDEでバイナリを実行/デバッグする機能についてもご要望を多数頂きました。 この機能は特に、CLionでサポートされている(ほとんどすべてのビルドシステムから抽出できる)コンパイルデータベースプロジェクトに役立つでしょう。 私たちはCLion 2019.1で、それを実現しました。

カスタムコマンドを使用してプロジェクトをビルドするには、Custom Build Target in Settings/Preferences | Build, Execution, Deployment | Custom Build Targets でカスタムビルドターゲットを作成してください。そこで、ツールチェーンとビルド/クリーンコマンドを指定できます:
カスタムターゲット

CLionでカスタム構成を実行またはデバッグするには、Run | Edit Configurations…でCustom Build Applicationの構成を設定してください。そこで、カスタムターゲット、実行可能ファイル、プログラム引数などを指定できます。
Custom configuration
これらすべてがどのように機能するかの詳細については、当社のウェブヘルプをご覧ください。

デバッガの機能強化

メモリビュー

CLion 2019.1以降、デバッグ時にポインタの後ろの生メモリをダンプできます。 また、デバッグ中にメモリビューを開き、ステップ実行中にメモリへの変更を追跡できます。
メモリビュー

これはまだ進行中の作業です。 例えば、次のアップデートではデバッグモードで任意のメモリアドレスをダンプする機能を予定しています。

逆アセンブリビュー

逆アセンブリビューが改善され、機能ごとに分類された情報を表示するようになりました。 またこれは、LLDBでも動作するようになったため、LLDBとGDBの両方が現在カバーされています。
Disasm view
ソースコードのない関数で Force Step Into(強制ステップイントゥ) (Win/LinではShift+Alt+F7、macOSでは⌥⇧F7) を使用すると、このビューが開きます:

変数をミュート

変数の計算にはかなりの時間がかかることがあります。コードをステップ実行する際には、特にパフォーマンスに重大な影響を与える可能性があります。 変数の計算に注意を払う必要がある場合、膨大な作業になる場合がある一方、最終的には必要ない場合もあります。 そのような状況では、一般的なIDEごとのスイッチを使って変数をミュートできるようになりました。 また、必要に応じて、Load(読み込み)オプションを適用して、現在のステップで特定の変数を計算できます。
変数をミュート

注入された言語

コードの一部を含む文字列リテラルは、実際のコードの一部として扱うことができます。 つまり、コードのハイライト、言語固有のインテンションやアクションをそれらに適用できます。 典型的な例は、SQLまたはHTML文字列、あるいは正規表現などです。

一時的に言語を注入するには、Alt+Enterを押して“Inject language or reference”(言語または参照を注入する)インテンションを適用し、適切な言語を選択すれば完了です! 専用のエディタセクションでコードフラグメントを編集したり、特定のアクションを適用したりできるようになりました。例えば、IDEで文字列がRegExpに一致するかどうかを確認できます。
Inject language
これは便利ですよね?

カスタムテーマでIDEをカラフルに!

デフォルトのホワイトとDarculaのテーマでは不十分な場合、ぜひカスタムテーマを作成してください! アイコンやラジオボタンから矢印まで、IDEのすべての項目のすべての色を調整できます。 お好みに合わせて調整してから、それをすべて新しいテーマプラグインとして保存してください。 こちらのチュートリアルで調整方法をご確認ください。
カラーテーマ

Rustプラグインのアップデート

IntelliJ RustプラグインはCLionでRustのサポートとCargoビルドシステムおよびデバッガを提供します。 このバージョンはそれが大規模にアップデートされました:

  • プロファイラがRustでサポートされるようになりました:macOSではDTrace、LinuxではPerf。
  • 範囲外の項目はコード補完でサジェストされ、使用時に自動インポートをトリガーします。
  • doc commentsでコードスニペットへのRust言語挿入が提供されるようになりました。
  • Cargo checkアノテーター、LLDB、およびGDBフォーマッタのさまざまな改善。

ぜひ「はじめてのCLion+IntelliJ Rust」ブログポストもご確認ください。

その他の機能強化

その他の改善には、新しい Recent Locations(最近の場所)ポップアップが含まれています。最近訪れたすべての場所を時系列順にまとめた概要と、バンドルされたCMake(3.13)、バンドルされたLLDB(7.0.1)、および最近サポートされたCygwin(3.0)の更新されたバージョンを提供。

さらに、CLionのプラグインを構築するプロセスは、gradle-intellij-plugin (バージョン0.4.2以降)によって使用されるMavenの依存関係としてCLionを公開することで、簡素化されました。

以上です! ぜひ新しい改善点をお試しください。そして、いつものように、フィードバックは大歓迎です。

CLion 2019.1をダウンロード

[原文Original post in English is written by Anastasia Kazakova

image description