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

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

選択された補完項目には、構文がハイライトされた署名とドキュメントを含むポップアップが表示されます。 必要に応じて、 ページの 要約を表示 チェックボックスをオフにすることで、ReSharper オプション Alt+R、O のこのポップアップを無効化できます。

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

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

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

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

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

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

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

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

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

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


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

必要に応じて、 ページの C++ の Visual Studio ツールチップを置き換える チェックボックスをオフにすることで、ReSharper ツールチップを無効化できます。
パラメーター情報
関数呼び出しを書く、または調べるときはいつでも、ReSharper でその関数のすべてのオーバーロードに許可される引数の詳細を確認できます。 ポップアップには、関数の XML ドキュメントから取得したパラメーターと簡単な説明 (利用可能な場合) を含むすべての公開署名が表示されます。
パラメーターを入力しているとき、ReSharper は自動的に入力されたパラメーターと互換性がある次のシグネチャーをハイライトし、適用できないシグネチャーはグレー表示します。 既存の関数呼び出しの代替シグネチャーを調べるには、関数の括弧内にキャレットを置き、 Control+P を押すか、メインメニューから を選択します。

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

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

ステートメントまたは宣言を、その直後の領域(右に移動 )または現在の領域の外(左に移動 )に移動します。

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

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

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

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

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

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

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

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

このアクションは、専用のショートカット Control+/ およびメニューからも使用できます: 。
ペアアイテムをハイライトする
ReSharper は、ペアの項目のいずれかにキャレットを置くと、一致するさまざまな項目をハイライトします:
対応する区切り文字 (
()、[]、{}、<>)一致するマクロ(例:
BEGIN_NAMESPACE/END_NAMESPACE)printfとboost::formatのフォーマット指定子と引数のマッチング