ReSharper 2026.1 Help

C++ のコーディングアシスタンス

ReSharper のコーディング支援機能のほとんどは C++ でもサポートされています。 これらの機能の詳細については、 コーディング支援 セクションの該当トピックを参照してください。 このセクションのサブジェクトでは、フィーチャマトリックスを見つけて、C++ で正確にサポートされているものを確認することもできます。

このトピックでは、C++ のコーディング支援機能の使用例をいくつか見つけることができます。

デフォルトでは、 コードインスペクションクイックフィックスコンテキストアクションはすべてのソリューションファイルで使用できます。 必要に応じて、ソリューションから参照される外部ファイルでこれらの機能を有効化するには、ReSharper オプション Alt+R、O コード編集 | C++ | インスペクション ページ上にある ソリューション外部のファイルでインスペクション、クイックフィックス、コンテキストアクションを有効にする チェックボックスを使用します。

カスタムコンパイラーツールチェーンを使用する場合、コーディング支援を向上させるために追加のコンパイルプロパティを提供すると便利です。 コンパイルプロパティを指定するには、ソリューションエクスプローラーでプロジェクトを選択し、プロパティの ReSharper セクションに移動します。 追加のインクルードディレクトリを指定したり、プリプロセッサー定義を追加したり、言語標準を設定したりできます。

ReSharper C++: 追加のプロジェクトプロパティ

設定は、プロジェクトファイルの横にある .vcxproj.DotSettings ファイルに保存されます。 これらの追加のプロパティはコンパイルに影響を与えないことに注意してください。

コード補完

自動および基本補完

C++ ファイルでは、コードを記述するときに 自動および 基本的な Control+Space 補完を使用できます。 例: 別のネームスペースから取得した列挙型メンバーをすばやく追加できます。

C++ の自動補完

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

C++ での基本補完

インポートシンボル補完

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

ReSharper: C++ でのシンボル補完のインポート

オプションで、 コード編集 | C++ | インスペクション ページの 基本補完でインポート項目を表示する を選択すると、自動補完や基本補完の候補リストにインポートシンボル候補を含めることができます(ReSharper オプション Alt+R、O )。

これはパフォーマンスへの影響があります(ReSharper が補完リストをビルドするたび、ソリューション内のすべてのシンボルを調べて一致させる必要があるため)、そのためデフォルトでは無効化されています。

ドット / 矢印補完ヘルパー

メソッドを呼び出すときは、いつでもドット . または矢印 -> を入力して、補完リストで使用可能なすべてのメソッドを取得できます。 ./-> に一致しないメソッドは灰色で表示されます。 このような方法を選択すると、 ./-> は自動的に修正されます。

完了時にドットを矢印に置き換える

生成補完

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

C++ の生成完了

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

C++ の生成完了

後置補完

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

ReSharper C++: Postfix templates

後置補完機能には、適切なメソッドを探す代わりに、頻繁に使用される言語構造で式をすばやくラップできる 後置テンプレートも含まれています。

コード補完のフリー機能

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

ReSharper C++: Free functions in code completion

補完候補にフリー関数を表示したくない場合は、 コード編集 | C/C++ | コード補完 ページの対応するチェックボックスをオフにすることで、ReSharper オプション Alt+R、O の設定により非表示にできます。

依存コード内のコード補完

ReSharper は自動的にデフォルトのテンプレート引数を使用して、依存コードの補完候補を提示します。 テンプレート本体の内側に入力するとき、パラメーターの型情報がないとコード補完が利用できないことがあります。 ただし、デフォルト引数を持つテンプレートパラメーターの場合、ReSharper はそれらのデフォルト引数に基づいて補完候補を提示します。

ReSharper C++: 依存コード内のコード補完

インポートアイテムのコード補完

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

ReSharper C++: code completion for an import item

ステートメントの補完

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

ReSharper C++: complete statement

構文ハイライトとツールチップ

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

C++ 識別子の構文ハイライトの設定
C++ 識別子の構文ハイライトの設定

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

ReSharper: C++ のエディターツールチップ

必要に応じて、 環境 | エディター | Visual Studio の機能 ページの C++ の Visual Studio ツールチップを置き換える チェックボックスをオフにすることで、ReSharper ツールチップを無効化できます。

パラメーター情報

関数呼び出しを書く、または調べるときはいつでも、ReSharper でその関数のすべてのオーバーロードに許可される引数の詳細を確認できます。 ポップアップには、関数の XML ドキュメントから取得したパラメーターと簡単な説明 (利用可能な場合) を含むすべての公開署名が表示されます。

パラメーターを入力しているとき、ReSharper は自動的に入力されたパラメーターと互換性がある次のシグネチャーをハイライトし、適用できないシグネチャーはグレー表示します。 既存の関数呼び出しの代替シグネチャーを調べるには、関数の括弧内にキャレットを置き、 Control+P を押すか、メインメニューから ReSharper | 編集 | パラメーター情報 を選択します。

ReSharper C++: パラメーター情報

パラメーター情報ツールチップには、集計の初期化を実行するときに集計クラスのメンバーに関する詳細も表示され、ユーザー定義のバイナリ演算子、削除された関数、暗黙的に生成された関数の情報も表示されます。

依存コードでは、テンプレート引数のドキュメントコメントからテンプレートパラメーターの説明を取得し、デフォルトのテンプレート引数を使用して依存コードのパラメーターに関する情報を提供します。

ReSharper C++: 従属コード付きパラメーター情報

パラメーター情報ツールチップは、 環境 | IntelliSense | パラメーター情報 ページの ReSharper オプション Alt+R、O で設定できます。

コードの再配置

コードの再配置は、コード要素をすばやく移動し、現在のスコープを拡大または縮小します。 コードを再配置するには、移動したいコード要素や選択範囲の上で Ctrl+Shift+Alt を押してから任意の方向キーを押します。 最初に何かを選択せずにこのコマンドを呼び出すと、可動要素が自動的に選択されます。

左に移動右に移動 には、次の 2 つのモードがあります。

  • 通常は単一行で記述される要素も再配置できます(複数行でも動作します)。 波括弧イニシャライザーリスト内の要素や関数・ラムダのパラメーターおよび引数などに対して、 左に移動 および 右に移動 を使用できます。

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

    ReSharper C++: Move a line into the following region

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

ReSharper C++: Rearrange if statements

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

ReSharper C++: Change the namespace scope

該当するケースの完全なリスト:

左に移動して右に移動

上に移動し、下に移動

  • 現在の範囲外で次の範囲内のステートメントと宣言

  • 代入式、バイナリ式、フォールド式、条件式のオペランド

  • switch ステートメントのケースラベル

  • 添え字式または配列指定子のインデックス

  • 関数 / ラムダパラメーターと引数

  • マクロパラメーターとマクロ呼び出し引数

  • テンプレートのパラメーターと引数

  • 宣言における宣言子と構造化バインディング

  • 基本型

  • ブレース初期化子リストの要素

  • 例外仕様のタイプ

  • Doxygen HTML 属性

  • C++ /CLI ジェネリクス制約の項目

  • ラムダキャプチャー

  • メンバー初期化子

  • 使用宣言の一部

  • 周囲のスコープ内のステートメントと宣言

  • enum 宣言内の列挙子

  • 複合 if ステートメントのブランチ

  • ネストされた if ステートメントの条件

  • a の本文内の要件は、式を要求します

  • if-else、try-catch ステートメントの 1 つの句からのステートメント、または 1 つのスイッチセクションから別のセクションへのステートメント

  • ステートメントと宣言での中括弧の開閉 (貪欲ブレース)

  • switch ステートメント内のセクションを切り替える

  • try-catch ステートメント内の Catch セクション

  • Doxygen コマンド

  • C++ /CLI の一般的な制約

コンテキストアクション

ReSharper は C++ コードをターゲットとする一連の コンテキストアクションを提供します。 コード編集 | C++ | コンテキストアクション ページの ReSharper オプション で、これらのアクションの全リストを確認できます。 必要に応じて、このページを使用して一部のアクションを無効にすることもできます。

現在のキャレット位置でコンテキストアクションが利用可能になると、ReSharper は対応する アクションインジケーター ThemedIcon.ContextAction.Screen.(グレー).png をキャレットの左側に表示します。 ただし、ReSharper が現在のキャレット位置で複数のコンテキスト関連の機能を提供する場合もあります。 この場合、最も優先度が高いアクションに対応するアクションインジケーターが表示され、他のすべてのアクションはアクションインジケーターをクリックするか Alt+Enter を押して アクションリストを展開したときにのみ表示されます。コンテキストアクションは優先度が最も低いため、アクションリストの下部に表示されることが多いです。

C++ のコンテキストアクションの例をいくつか示します。

列挙型を文字列に変換する (enum-to-string ヘルパーを生成する)

このコンテキストアクションは、列挙子を対応する文字列に変換する特定の列挙型のヘルパー関数を生成します。

例: 次の列挙型でこのアクションを起動した場合

enum class Suit { Diamonds, Hearts, Clubs, Spades };

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

const char* to_string(Suit e) { switch (e) { case Suit::Diamonds: return "Diamonds"; case Suit::Hearts: return "Hearts"; case Suit::Clubs: return "Clubs"; case Suit::Spades: return "Spades"; default: return "unknown"; } }

必要に応じて、 enum_to_string ライブテンプレートを 編集することで、ReSharper が生成に利用する関数をカスタマイズできます。 例: ストリーム出力演算子のオーバーロードを生成するようにテンプレートを構成できます。

std::ostream& operator <<(std::ostream& out, Suit e) { switch (e) { case Suit::Diamonds: return out << "Diamonds"; case Suit::Hearts: return out << "Hearts"; case Suit::Clubs: return out << "Clubs"; case Suit::Spades: return out << "Spades"; default: assert(false); return out << "unknown"; } }

不足している case 文を生成する

enum を切り替えるときに、すべての case 文を手動で記述するのではなく、欠落している case 文をすべて生成する context アクションを使用することができます。

C++ での欠損症例の生成

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

C++ での欠損症例の生成

ネストした 'if' ステートメントをマージ

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

C++ でネストした 'if' ステートメントをマージする

実装を生成する

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

関数の実装の生成

実装をクラススコープから移動する

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

実装をクラススコープからソースファイルに移動する

コンテキストアクションを使用して、現在の選択範囲内のすべての実装を移動することもできます。

文書エンティティ

このコンテキストアクションを使用すると、C++ シンボルのドキュメントコメントを生成できます。 必要に応じて、ReSharper が生成に使用する docライブテンプレートを 編集して、コメントスタブをカスタマイズできます。

ReSharper: generating documentation comments

このアクションは、専用のショートカット Control+/ およびメニューからも使用できます: ReSharper | 編集| 文書

ペアアイテムをハイライトする

ReSharper は、ペアの項目のいずれかにキャレットを置くと、一致するさまざまな項目をハイライトします:

  • 対応する区切り文字 (()[]{}<>)

  • 一致するマクロ(例: BEGIN_NAMESPACE/END_NAMESPACE

  • printfboost::format のフォーマット指定子と引数のマッチング

2026 年 6 月 12 日