C++ のコーディングアシスタンス
JetBrains Rider のコーディング支援機能のほとんどは、C++ でもサポートされています。これらの機能の詳細については、コーディング支援セクションの対応するトピックを参照してください。
このトピックでは、C++ のコーディング支援機能の使用例をいくつか見つけることができます。
デフォルトでは、コードインスペクション、クイックフィックス、コンテキストアクションはすべてのソリューションファイルで使用できます。必要に応じて、JetBrains Rider 設定 Ctrl+Alt+S の ページにあるソリューション外部のファイルでインスペクション、クイックフィックス、コンテキストアクションを有効にするチェックボックスを使用して、ソリューションから参照される外部ファイルでこれらの機能を有効にすることができます。
コード補完
自動および基本補完
C++ ファイルでは、コードを記述するときに自動および基本的な Ctrl+Space 補完を使用できます。例: 別のネームスペースから取得した列挙型メンバーをすばやく追加できます。
![C++ の自動補完 Automatic completion in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_completion_1.png)
選択した完了項目には、構文がハイライトされた署名とドキュメントを含むポップアップが表示されます。必要に応じて、JetBrains Rider 設定 Ctrl+Alt+S のパラメーター情報ポップアップを _ ms で表示チェックボックスをオフにすることにより、このポップアップを無効にできます。
ページで![C++ での基本補完 Basic completion in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_completion_11.png)
インポートシンボル補完
使用するシンボルが対応する #include
で現在のファイルにインポートされていないが、標準ライブラリまたはソリューションの別の場所で定義されている場合、Ctrl+Alt+Space を押すと補完候補でこのシンボルをすばやく見つけることができます。
![JetBrains Rider: C++ でのシンボル補完のインポート JetBrains Rider: Import symbol completion in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_import_completion.png)
オプションで、JetBrains Rider 設定 Ctrl+Alt+S の基本補完でインポート項目を表示するを選択することにより、インポートシンボルの提案を自動および基本補完の候補リストに含めることができます。
ページでこれにはパフォーマンスの低下が伴うことに注意してください(JetBrains Rider が補完リストを構築するたびに、ソリューション内のすべてのシンボルを調べて一致させる必要があるため)、デフォルトでは無効になっています。
ドット / 矢印補完ヘルパー
メソッドを呼び出すときは、いつでもドット .
または矢印 ->
を入力して、補完リストで使用可能なすべてのメソッドを取得できます。.
/->
に一致しないメソッドは灰色で表示されます。このような方法を選択すると、.
/->
は自動的に修正されます。
![完了時にドットを矢印に置き換える Replacing dot with arrow in completion](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_completion_pointer.png)
生成補完
生成補完の提案もあります。例: オブジェクトのメンバー関数宣言を呼び出すと ...
![C++ の生成完了 Generative completion in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_completion_2.png)
JetBrains Rider は次の関数を生成します。
![C++ の生成完了 Generative completion in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_completion_3.png)
後置補完
C++ での後置補完は、C# 拡張メソッドに非常によく似ています。式の後にドット .
または矢印 ->
を入力すると、JetBrains Rider はその式を最初のパラメーターとして受け入れる無料の関数を提案します。提案を受け入れると、JetBrains Rider はコードを書き換えて、式が最初の引数として渡されるようにします。
![JetBrains Rider C++: Postfix templates](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_postfix.png)
後置補完機能には、適切なメソッドを探す代わりに、頻繁に使用される言語構造で式をすばやくラップできる後置テンプレートも含まれています。
コード補完のフリー機能
C++ コーディングの一般的な方法の 1 つは、メンバー関数よりも非メンバー非フレンド関数を優先することです。これは、カプセル化を増やし、クラスインターフェースをできる限り最小限に抑える優れた方法です。式の後にドット .
または矢印 ->
を入力すると、最初のパラメーターとして式を受け入れる自由関数が、メンバー関数の後の補完リストで提案されます。
![ReSharper C++: Free functions in code completion](https://resources.jetbrains.com/help/img/rider/2024.1/free_func_completion.png)
補完候補に無料の機能を含めたくない場合は、JetBrains Rider 設定 Ctrl+Alt+S の
ページで対応するチェックボックスをオフにします。依存コード内のコード補完
JetBrains Rider は自動的にデフォルトのテンプレート引数を使用して、依存コードの補完候補を提示します。テンプレート本体の内側に入力するとき、パラメーターの型情報がないとコード補完が利用できないことがあります。しかし、デフォルト引数を持つテンプレートパラメーターの場合、JetBrains Rider はそれらのデフォルト引数に基づいて補完候補を提示します。
![JetBrains Rider C++: 依存コード内のコード補完 JetBrains Rider C++: code completion in dependent code](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_templates_completion.png)
インポートアイテムのコード補完
インポートシンボル補完が有効になっている場合、JetBrains Rider の補完リストは、現在のファイルに含まれていないヘッダーからのアイテムも提案します。クラスが現在のファイルに含まれていない場合、補完リストは 2 つのオプションを提案します。インクルードディレクティブを挿入するか、フォワード宣言を追加します。両方のオプションを含むコンテキストメニューがデフォルトで表示されますが、JetBrains Rider 設定 Ctrl+Alt+S の ページでデフォルトの動作を変更できます。
![JetBrains Rider C++: code completion for an import item](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_forward_declaration.png)
ステートメントの補完
ステートメントの補完機能は、必要な構文要素を挿入し、次のステートメントの入力を開始できる位置にキャレットを置きます。これにより、他の多くの小さなアクションを実行する代わりに、Ctrl+Shift+Enter ショートカットを使用できるようになります。例: このショートカットは中括弧とセミコロンを自動的に挿入し、本文の書き込みに進むことができる場所にキャレットを配置します。
![JetBrains Rider C++: complete statement](https://resources.jetbrains.com/help/img/rider/2024.1/complete_class.png)
構文ハイライトとツールチップ
デフォルトでは、JetBrains Rider は、構成可能な色で C++ 構文の拡張ハイライトを提供します。必要に応じて、JetBrains Rider オプションの
ページで無効にすることができます。異なる方法でハイライトできる識別子の種類は 20 種類あります。Visual Studio オプション( )でいつでも色とフォントを変更できます。![C++ 識別子の構文ハイライトの設定 Configuring syntax highlighting for C++ identifiers](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_syntax_highlighting.png)
![C++ 識別子の構文ハイライトの設定 Configuring syntax highlighting for C++ identifiers](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_syntax_highlighting.png)
JetBrains Rider は、コード要素の Visual Studio ツールチップを独自のツールチップに置き換えます。ツールチップには、構文、表示方法、フィールドシグネチャー、フォーマットされた XML、Doxygen コメントがハイライトされています。
![JetBrains Rider: C++ のエディターツールチップ JetBrains Rider: Editor tooltip in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_tooltip.png)
パラメーター情報
関数呼び出しを書いたり調べたりするときはいつでも、JetBrains Rider は、関数のすべてのオーバーロードで許可されている引数の詳細を表示できます。ポップアップには、関数の XML ドキュメントから取得したパラメーターと簡単な説明 (利用可能な場合) を含むすべての公開署名が表示されます。
パラメーターを入力すると、JetBrains Rider は入力されたパラメーターと互換性のある次のシグネチャーを自動的にハイライトし、適用できないシグネチャーをグレー表示します。既存の関数呼び出しの代替シグネチャーを調べるには、関数の括弧内にキャレットを置き、Ctrl+P を押すか、メインメニューから
を選択します。![JetBrains Rider C++: パラメーター情報 JetBrains Rider C++: Parameter information](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_parameter_info.png)
パラメーター情報ツールチップは、集計の初期化を実行するときの集計クラスのメンバーに関する詳細も提供し、ユーザー定義の二項演算子、削除された関数、暗黙的に生成された関数の情報を表示します。
依存コードでは、テンプレート引数のドキュメントコメントからテンプレートパラメーターの説明を取得し、デフォルトのテンプレート引数を使用して依存コードのパラメーターに関する情報を提供します。
![JetBrains Rider C++: 従属コード付きパラメーター情報 JetBrains Rider C++: Parameter information with dependent code](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_parameter_info_dependent_code.png)
パラメーター情報ツールチップは、JetBrains Rider オプションの
ページで設定可能です。コードの再配置
コードの再配置は、コード要素をすばやく移動し、現在のスコープを拡大または縮小します。コードを再配置するには、移動するコード要素または選択範囲の上で Ctrl+Shift+Alt を押してから、任意の矢印キーを押します。最初に何かを選択せずにこのコマンドを呼び出すと、可動要素が自動的に選択されます。
左に移動と右に移動には、次の 2 つのモードがあります。
通常は 1 行で記述される要素を再配置します(要素が複数行で記述されている場合でも機能します)。ブレース付きのイニシャライザーリストの要素、および関数やラムダのパラメーターと引数などに左に移動と右に移動を使用できます。
ステートメントまたは宣言を、その直後の領域(右に移動)または現在の領域の外(左に移動)に移動します。
上へ移動および下へ移動コマンドは、特定のスコープ内の要素を、このスコープ内の他の要素に対して上下に、または隣接するスコープ間で再配置します。上へ移動コマンドと下へ移動コマンドは、ステートメントと宣言、switch ステートメントのセクション、列挙子、try-catch ステートメント内の catch セクション、条件または if ステートメントのブランチなどで使用できます。
![JetBrains Rider C++: Rearrange if statements](https://resources.jetbrains.com/help/img/rider/2024.1/rearrange_down_cpp.png)
中括弧を上下に移動して、現在の複合ステートメント、タイプ、ネームスペースを拡大または縮小することもできます。
![JetBrains Rider C++: Change the namespace scope](https://resources.jetbrains.com/help/img/rider/2024.1/rearrange_scope_cpp.png)
該当するケースの完全なリスト:
左に移動して右に移動 | 上に移動し、下に移動 |
---|---|
|
|
コンテキストアクション
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 アクションを使用することができます。
![C++ での欠損症例の生成 Generating missing case statements in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_generate_missing_case_1.png)
しなければならないことは、各ステートメントに必要なロジックを書くことだけです。
![C++ での欠損症例の生成 Generating missing case statements in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_generate_missing_case_2.png)
ネストした 'if' ステートメントをマージ
JetBrains Rider は、ネストされた 'if' ステートメントをコンテキストアクションとマージできます。
![C++ でネストした 'if' ステートメントをマージする Merging nested 'if' statements in C++](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_merge_nested_ifs.png)
実装の生成
JetBrains Rider は、関数またはメソッドのスタブ実装を自動的に作成できます。常にインライン実装を生成できます。関数がヘッダーファイルで定義されていて、対応するソースファイルがある場合は、ソースファイルで実装を生成できます。
![関数の実装の生成 Generating implementation for a function](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_generate_implementation.png)
実装をクラススコープから移動する
JetBrains Rider を使用すると、関数またはメソッドの実装を、ヘッダーから対応するソースファイル(存在する場合)に移動できます。このコンテキストアクションを適用した後、定義は元の場所に残り、実装はソースファイルに移動されます。エディターのコンテキストもソースファイルに切り替わります。
![実装をクラススコープからソースファイルに移動する Moving implementation out of class scope to the source file](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_move_implementation.png)
コンテキストアクションを使用して、現在の選択範囲内のすべての実装を移動することもできます。
文書エンティティ
このコンテキストアクションを使用すると、C++ シンボルのドキュメントコメントを生成できます。必要に応じて、JetBrains Rider が生成に使用する doc live テンプレートを編集して、コメントスタブをカスタマイズできます。
![JetBrains Rider: generating documentation comments](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_doc.png)
ペアアイテムをハイライトする
JetBrains Rider は、ペアの 1 つの項目にキャレットを置くと、一致するさまざまな項目をハイライトします。
マッチするデリミタ (
()
、[]
、{}
、<>
)一致するマクロ(例:
BEGIN_NAMESPACE
/END_NAMESPACE
)printf
とboost::format
のフォーマット指定子と引数のマッチング
関連ページ:
![](https://pleiades.io/icons/rider.png)
コーディング支援
JetBrains Rider はさまざまなコーディング支援機能を提供します。これにより、コードの記述と編集がはるかに高速になり、生産性が向上し、時間を節約できます。本セクション: コード補完 (IntelliSense)、入力支援、ステートメントの補完、カラーアシスタンス、コンテキストアクション、正規表現の支援、C# での言語インジェクション、Web 言語での言語インジェクション、パラメーター情報、クイックドキュメント、クイック定義、Tab および Shift + Tab を使用した構造ナビゲー...
![](https://resources.jetbrains.com/help/img/rider/2024.1/cpp_inspection_results.png)
C++ でのコード分析
JetBrains Rider のコード解析の主な機能は、C++ でもサポートされています。これらの機能の詳細については、コード解析の該当するトピックを参照してください。このセクションのサブジェクトでは、フィーチャマトリックスを見つけて、C++ で正確にサポートされているものを確認することもできます。このトピックでは、C++ でコード解析機能を使用する例をいくつか見てみましょう。デフォルトでは、コードインスペクション、クイックフィックス、コンテキストアクションはすべてのソリューションファイルで使...
![](https://resources.jetbrains.com/help/img/rider/2024.1/Coding_Assistance__Code_Completion__Symbol__this.png)
自動補完
JetBrains Rider の自動補完は、クラス、メソッド、変数、キーワード、以前にインポートされた拡張メソッドを含む現在の可視性スコープ内で使用可能なその他のシンボルの名前を提案します。ライブテンプレート、コード生成の提案、単体テストのカテゴリなど、他の多くのコンテキスト固有の提案も補完リストで利用できます。デフォルトでは、自動補完の提案には第 2 基本補完のアイテムも含まれます。デフォルトの動作を変更する場合は、JetBrains Rider 設定のページにある対応するコントロールを使...
![](https://resources.jetbrains.com/help/img/rider/2024.1/Coding_Assistance__Code_Completion__Generative__generative_completion_05.png)
生成補完
JetBrains Rider でコードを生成する最も簡単な方法の 1 つは、コード補完を使用することです。必要なのは、いくつかの文字を入力することだけです。コード生成の提案は、自動補完と基本補完のリストに含まれています。コード補完でコードを生成する方法の例をいくつか示します。メンバーのオーバーライドと実装:以下の例では、コード補完は、基本クラスから仮想メンバーのオーバーライドを作成できます。派生型で基本メソッド名を入力し始めると、それをオーバーライドするための提案が表示されます。提案を受け入...
![](https://resources.jetbrains.com/help/img/rider/2024.1/Coding_Assistance__Code_Completion__Type_Name__extension_methods.png)
第 2 基本補完
このコマンドは、名前空間が現在のファイルにインポートされているかどうかにかかわらず、現在のプロジェクトで参照されているモジュールの型と拡張メソッドを示します。提案された各項目の名前空間は、候補リストの右側に表示されます。インポートされていないタイプを選択すると、必要な名前空間のインポート指示が自動的に追加されます。2 番目の基本補完を呼び出すコードを入力する位置にキャレットを置きます。を押します。リストから提案を選択して Enter を押すか、識別子の頭文字または CamelHumps の省略形の入力を...
![](https://resources.jetbrains.com/help/img/rider/2024.1/actions_list_2.png)
コンテキストアクション
コンテキストアクションは、エディターで直接利用できるコード変換ヘルパーです。クイックフィックスとは対照的に、コンテキストアクションは問題の解決やコードの改善を目的としているためはなく、アクセス修飾子の変更、null をチェックするコードの生成、'foreach' の 'for' への変換などの小さな変更を素早く導入できます。JetBrains Rider は、サポートされているすべての言語で数百のコンテキストアクションを提供します。完全なリストは、JetBrains Rider 設定のページお...