C++ のコーディングアシスタンス
JetBrains Rider のコーディング支援機能のほとんどは、C++ でもサポートされています。 これらの機能に関する詳細情報は、 コーディング支援 セクションの対応するトピックにあります。
このトピックでは、C++ のコーディング支援機能の使用例をいくつか見つけることができます。
デフォルトでは、 コードインスペクション、 クイックフィックス、 コンテキストアクションはすべてのソリューションファイルで利用できます。 必要に応じて、JetBrains Rider 設定 Ctrl+Alt+S の ページにある ソリューション外部のファイルでインスペクション、クイックフィックス、コンテキストアクションを有効にする チェックボックスを使用して、ソリューションから参照される外部ファイルでこれらの機能を有効化できます。
カスタムコンパイラーツールチェーンを使用する場合、コーディング支援を向上させるために追加のコンパイルプロパティを提供すると便利です。 コンパイルプロパティを指定するには、ソリューションエクスプローラーでプロジェクトを選択し、プロパティの ReSharper セクションに移動します。 追加のインクルードディレクトリを指定したり、プリプロセッサー定義を追加したり、言語標準を設定したりできます。

設定は、プロジェクトファイルの横にある .vcxproj.DotSettings ファイルに保存されます。 これらの追加のプロパティはコンパイルに影響を与えないことに注意してください。
コード補完
自動および基本補完
C++ ファイルでは、コードを記述するときに 自動および 基本的な Ctrl+Space 補完を使用できます。 例: 別のネームスペースから取得した列挙型メンバーをすばやく追加できます。

選択した完了項目には、構文がハイライトされた署名とドキュメントを含むポップアップが表示されます。 必要に応じて、このポップアップは、JetBrains Rider 設定 の Ctrl+Alt+S ページで パラメーター情報ポップアップを _ ms で表示 チェックボックスをオフにすることで無効化できます。

インポートシンボル補完
使用するシンボルが対応する #include で現在のファイルにインポートされていないが、標準ライブラリまたはソリューションの別の場所で定義されている場合、 Ctrl+Alt+Space を押すと補完候補でこのシンボルをすばやく見つけることができます。

オプションで、自動補完と基本補完の候補リストにインポートシンボルの候補を含めるには、JetBrains Rider 設定 の Ctrl+Alt+S ページで 基本補完でインポート項目を表示する を選択してください。
これにはパフォーマンスの低下が伴うことに注意してください(JetBrains Rider が補完リストをビルドするたびに、ソリューション内のすべてのシンボルを調べて一致させる必要があるため)、そのためデフォルトでは無効化されています。
ドット / 矢印補完ヘルパー
メソッドを呼び出すときは、いつでもドット 。 または矢印 -> を入力して、補完リストで使用可能なすべてのメソッドを取得できます。 。/-> に一致しないメソッドは灰色で表示されます。 このような方法を選択すると、 。/-> は自動的に修正されます。

生成補完
生成補完 の提案も利用できます。 例: オブジェクトのメンバー関数宣言を呼び出すと ...

JetBrains Rider は次の関数を生成します:

後置補完
C++ での後置補完は、C# 拡張メソッドに非常によく似ています。 式の後にドット 。 または矢印 -> を入力すると、JetBrains Rider はその式を最初のパラメーターとして受け入れるフリー関数を提案します。 提案を受け入れると、JetBrains Rider はその式が最初の引数として渡されるようにコードを書き換えます:

後置補完機能には、適切なメソッドを探す代わりに、頻繁に使用される言語構造で式をすばやくラップできる 後置テンプレートも含まれています。
コード補完のフリー機能
C++ コーディングの一般的な方法の 1 つは、メンバー関数よりも非メンバー非フレンド関数を優先することです。 これは、カプセル化を増やし、クラスインターフェースをできる限り最小限に抑える優れた方法です。 式の後にドット 。 または矢印 -> を入力すると、最初のパラメーターとして式を受け入れる自由関数が、メンバー関数の後の補完リストで提案されます。

補完候補にフリー関数を含めたくない場合は、JetBrains Rider 設定 の Ctrl+Alt+S ページで該当するチェックボックスをオフにしてください。
依存コード内のコード補完
JetBrains Rider は自動的にデフォルトテンプレート引数を使用して、依存コード内の補完候補を提示します。 テンプレート本体の内側に入力するとき、パラメーターの型情報がないとコード補完が利用できないことがあります。 ただし、デフォルト引数を持つテンプレートパラメーターの場合、JetBrains Rider はそれらのデフォルト引数に基づいて補完候補を提示します。

インポートアイテムのコード補完
インポートシンボル補完が有効化されている場合、JetBrains Rider の補完リストには現在のファイルに含まれていないヘッダーからの項目も提案されます。 クラスが現在のファイルに含まれていない場合、補完リストでは include ディレクティブの挿入か事前宣言の追加、いずれかのオプションが提案されます。 両方のオプションを含むコンテキストメニューがデフォルトで表示されますが、JetBrains Rider 設定 の ページでデフォルト動作を変更できます Ctrl+Alt+S。

ステートメントの補完
Complete Statement 機能は、必要な構文要素を挿入し、次のステートメントの入力を開始できる位置にキャレットを配置します。 これにより、他の多くの小さなアクションを実行する代わりに、 Ctrl+Shift+Enter ショートカットを使用できるようになります。 例: このショートカットは中括弧とセミコロンを自動的に挿入し、本文の書き込みに進むことができる場所にキャレットを配置します。

構文ハイライトとツールチップ
デフォルトで、JetBrains Rider は C++ 構文の拡張ハイライトを構成可能な色で提供します。 必要に応じて、JetBrains Rider オプションの ページで無効化できます。 異なる方法でハイライトできる識別子の種類は 20 種類あります。 Visual Studio オプション( )でいつでも色とフォントを変更できます。


JetBrains Rider はコード要素用の Visual Studio のツールチップを独自のツールチップに置き換えます。独自のツールチップにはハイライト構文、メソッドやフィールドのシグネチャー、フォーマット済み XML や Doxygen コメントが表示されます:

パラメーター情報
関数呼び出しを書いたり調べたりするときは、JetBrains Rider はその関数のすべてのオーバーロードで許可されている引数の詳細を表示するのに役立ちます。 ポップアップには、関数の XML ドキュメントから取得したパラメーターと簡単な説明 (利用可能な場合) を含むすべての公開署名が表示されます。
パラメーターを入力すると、JetBrains Rider は入力されたパラメーターと互換性のある次のシグネチャーを自動的にハイライトし、適用できないシグネチャーはグレー表示します。 既存の関数呼び出しの代替シグネチャーを調べるには、関数の括弧内にキャレットを置き、 Ctrl+P を押すか、メインメニューから を選択します。

パラメーター情報ツールチップには、集計の初期化を実行するときに集計クラスのメンバーに関する詳細も表示され、ユーザー定義のバイナリ演算子、削除された関数、暗黙的に生成された関数の情報も表示されます。
依存コードでは、テンプレート引数のドキュメントコメントからテンプレートパラメーターの説明を取得し、デフォルトのテンプレート引数を使用して依存コードのパラメーターに関する情報を提供します。

パラメーター情報ツールチップは、JetBrains Rider 設定 の Ctrl+Alt+S ページで設定できます。
コードを再配置する
コードの再配置は、コード要素をすばやく移動し、現在のスコープを拡大または縮小します。 コードを再配置するには、移動したいコード要素や選択範囲の上で Ctrl+Shift+Alt を押し、その後いずれかの方向キーを押します。 最初に何かを選択せずにこのコマンドを呼び出すと、可動要素が自動的に選択されます。
左に移動 と 右に移動 には、次の 2 つのモードがあります。
通常は単一行で記述される要素を再配置します(複数行でも機能します)。 中括弧でくくられたイニシャライザーリストの要素や関数・ラムダのパラメーターおよび引数などで、 左に移動 と 右に移動 を利用できます。

ステートメントや宣言を直後の領域(右に移動 )や現在の領域の外側(左に移動 )に移動できます:

上へ移動 および 下へ移動 コマンドは、特定のスコープ内の要素を、このスコープ内の他の要素に対して上下に、または隣接するスコープ間で再配置します。 上へ移動 コマンドと 下へ移動 コマンドは、ステートメントと宣言、switch ステートメントのセクション、列挙子、try-catch ステートメント内の catch セクション、条件または if ステートメントのブランチなどで使用できます。

中括弧を上下に移動して、現在の複合ステートメント、タイプ、ネームスペースを拡大または縮小することもできます。

該当するケースの完全なリスト:
左に移動して右に移動 | 上に移動し、下に移動 |
|---|---|
|
|
コンテキストアクション
JetBrains Rider は C++ コードをターゲットとする一連の コンテキストアクションを提供します。 これらのアクションの全リストは、JetBrains Rider 設定 の エディター | コンテキストアクション | C++ ページで確認できます。 必要に応じて、このページを使用していくつかのアクションを無効にすることもできます。
現在のキャレット位置でコンテキストアクションが利用可能になると、JetBrains Rider は対応する アクションインジケーター
をキャレットの左側に表示します。 ただし、JetBrains Rider が現在のキャレット位置で複数のコンテキストに応じた機能を提供する場合もあります。 この場合、最も優先順位の高いアクションに対応するアクションインジケーターが表示され、他のすべてのアクションはアクションインジケーターをクリックするか Alt+Enter を押して アクションリストを展開した際にのみ表示されます。コンテキストアクションは優先度が最も低いため、アクションリストの最下部に表示されることが多いです。
C++ のコンテキストアクションの例をいくつか示します。
列挙型を文字列に変換する (enum-to-string ヘルパーを生成する)
このコンテキストアクションは、列挙子を対応する文字列に変換する特定の列挙型のヘルパー関数を生成します。
例: 次の列挙型でこのアクションを起動した場合
JetBrains Rider は次の関数を生成します:
必要に応じて、JetBrains Rider が生成に使用する enum_to_string ライブテンプレートを 編集することで、生成される関数をカスタマイズできます。 例: ストリーム出力演算子のオーバーロードを生成するようにテンプレートを構成できます。
不足している case 文を生成する
enum を切り替えるときに、すべての case 文を手動で記述するのではなく、欠落している case 文をすべて生成する context アクションを使用することができます。

しなければならないことは、各ステートメントに必要なロジックを書くことだけです。

ネストした 'if' ステートメントをマージ
JetBrains Rider は、ネストされた 'if' ステートメントをコンテキストアクションでマージできます:

実装を生成する
JetBrains Rider は、関数やメソッドのスタブ実装を自動で作成できます。 常にインライン実装を生成でき、関数がヘッダーファイルに定義されていて対応するソースファイルがある場合、そのソースファイルに実装を生成することもできます。

実装をクラススコープから移動する
JetBrains Rider を使用すると、関数やメソッドの実装を、ヘッダーから対応するソースファイルが存在すれば、そちらへ移動できます。 このコンテキストアクションを適用した後、定義は元の場所に残り、実装はソースファイルに移動されます。 エディターのコンテキストもソースファイルに切り替わります。

コンテキストアクションを使用して、現在の選択範囲内のすべての実装を移動することもできます。
文書エンティティ
このコンテキストアクションを使用すると、C++ シンボルのドキュメントコメントを生成できます。 必要に応じて、JetBrains Rider が生成に使用する doc ライブテンプレートを 編集 して、コメントスタブをカスタマイズできます。

ペアアイテムをハイライトする
JetBrains Rider は、ペアの項目のどちらかにキャレットを置くと、さまざまな一致する項目をハイライトします:
マッチするデリミタ (
()、[]、{}、<>)一致するマクロ(例:
BEGIN_NAMESPACE/END_NAMESPACE)printfとboost::formatのフォーマット指定子と引数のマッチング