ReSharper 2019.1ヘルプ

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

ReSharperのコーディング支援機能のほとんどはC++でもサポートされています。これらの機能の詳細については、コーディング支援セクションの対応するトピックを参照してください。このセクションの主なトピックでは、機能マトリックスを見つけて、C++で何がサポートされているのかを確認することもできます。

このトピックでは、C++のコーディング支援機能の使用例をいくつか紹介します。

コード補完

自動および基本補完

C++ファイルでは、コードを書くときに自動および基本Ctrl+Space)補完を使用できます。例:異なる名前空間から取得したenumメンバーを素早く追加することができます。

Automatic completion in C++

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

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

Replacing dot with arrow in completion

生成補完

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

Generative completion in C++

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

Generative completion in C++

後置補完

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

後置の補完には、適切なメソッドを探すのではなく、頻繁に使用される言語構造を持つ式をすばやく折り返すことができるような後置テンプレートも含まれています。

コード補完のフリー機能

一般的なC++コーディングの1つは、メンバー以外の非フレンド機能をメンバー機能に優先させることです。これは、カプセル化を強化し、クラスインターフェースをできるだけ小さく保つための素晴らしい方法です。式の後にドット(.)または矢印(->)を入力すると、式を最初のパラメータとして受け入れるフリー関数が、メンバー関数の後に補完リストで提案されます。

補完候補に自由な機能を持たせたくない場合は、ReSharperオプションのコード編集 | C++ | コード補完ページで対応するチェックボックスをオフにすることができます。

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

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

ReSharper C++: code completion in dependent code

構文強調表示とツールチップ

デフォルトでは、ReSharperは設定可能な色でC++構文の強調表示を拡張しています。必要に応じて、ReSharperオプションのコード編集 | C++ | インスペクションページで無効にすることができます。別の方法で強調表示できる20の識別子タイプがあります。Visual Studioのオプション(ツール | オプション | 環境 | フォントおよび色)では、いつでも色とフォントを変更できます。

Configuring syntax highlighting for C++ identifiers

ReSharperはまた、コード要素のVisual Studioツールチップを、構文、表示方法およびフィールド署名、フォーマットされたXMLおよびDoxygenコメントを強調表示した独自のツールチップで置き換えます。

Code element tooltip in C++

必要に応じて、ReSharperオプションの環境 | エディター | エディターの外観ページでVisual Studioツールチップを置き換えるチェックボックスをオフにして、ReSharperツールチップを無効にすることができます。ReSharperのツールチップは、構文強調表示が有効な場合にのみ利用可能であることにも注意してください。

パラメータと名前空間の名前のヒント

パラメータ名のヒントは、メソッド呼び出し時に対応する引数の隣にパラメータ名を表示するエディターの装飾です。これらは、関数呼び出しと集約の初期化で、長い(そして場合によっては入れ子になった)パラメータの一覧を調べるのに役立ちます。
以下の例では、パラメータ名のヒントが、高さと幅の引数が混在しているという事実を見つけるのに役立ちます。

ReSharper C++: parameter and namespace name hints

名前空間定義の最後にある名前空間名のヒントは、LLVM(英語)またはGoogle(英語)のガイドラインに従わない場合に役立ちます。LLVM(英語)またはGoogle(英語)のガイドラインでは、名前空間を括弧を閉じた後にコメントに名前空間を追加することをお勧めします。

パラメータと名前空間の名前のヒントに対する詳細な設定オプションがあります。

パラメータ情報

関数呼び出しを書いたり調べたりしているときはいつでも、ReSharperは関数のすべてのオーバーロードに対して許可された引数に関する詳細を表示できます。ツールチップでは、パラメータを持つすべてのパブリックシグニチャと、存在する場合は関数のドキュメントから取得した簡単な説明が表示されます。

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

ReSharper C++: Parameter information

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

ReSharper C++: Parameter information with dependent code

パラメータ情報ツールチップは、ReSharperオプションの環境 | IntelliSense | パラメーター情報ページで設定可能です。

コンテキスト・アクション

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

現在のキャレット位置でコンテキストアクションが使用可能になるとすぐに、ReSharperは対応するアクションインジケーター ThemedIcon ContextAction Screen Gray をキャレットの左側に表示します。しかし時々、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"; } }

必要に応じて、ReSharperが生成に使用するenum_to_stringライブテンプレートを編集して、生成された機能をカスタマイズできます。例:ストリーム出力演算子のオーバーロードを生成するようにテンプレートを設定できます。

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アクションを使用することができます。

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

ネストされた 'if' ステートメントをマージする

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

Merging nested 'if' statements in C++

実装を生成する

ReSharperは、関数またはメソッドのスタブ実装を自動的に作成できます。インライン・インプリメンテーションはいつでも生成できます。関数がヘッダー・ファイルで定義され、対応するソース・ファイルがある場合は、ソース・ファイルにインプリメンテーションを生成できます。

Generating implementation for a function

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

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

Moving implementation out of class scope to the source file

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

文書エンティティ

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

ペアアイテムを強調表示する

ReSharperは、キャレットをペアの1つの項目に設定すると、さまざまな一致する項目を強調表示します。

  • マッチするデリミタ ( ()[]{}、および <> )

  • マッチングマクロ( BEGIN_NAMESPACE / END_NAMESPACEなど)

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

最終更新日: 2019年6月7日

関連事項

関連ページ:

コーディング支援

ReSharperには、コーディング支援機能が豊富に用意されているため、コードの書き込みや編集がより迅速になり、生産性が向上し、時間が節約されます。このセクションで説明されている機能の他に、ReSharperはいくつかのコード生成機能とコードテンプレートを提供します。ReSharperのコーディング...

自動補完

ReSharperの自動補完は、以前にインポートされた拡張メソッドを含む、現在の可視性の範囲内で利用可能なクラス、メソッド、変数、キーワード、およびその他のシンボルの名前を提案します。ライブテンプレート、コード生成の提案、ユニットテストのカテゴリなど、他の多くのコンテキスト固有の提案も補完リストで利...

基本補完

ReSharper | 編集 | 完全なシンボルReSharperの基本補完は、クラス、メソッド、変数、キーワード、および以前にインポートされた拡張メソッドを含む現在の可視性の範囲内で利用可能なその他のシンボルの名前を提案します。ライブテンプレート、コード生成の提案、ユニットテストのカテゴリなど、他...

生成補完

ReSharperでコードを生成する最も簡単な方法の1つはコード補完を使用することです - する必要があるのはいくつかの文字をタイプすることです。コード生成の提案は自動補完と基本補完のリストに含まれています。コード補完でコードを生成する方法の例をいくつか示します。メンバーのオーバーライドと実装:以下...

Clang-Tidyインテグレーション

C++のサポートは、ReSharper C++(ReSharperと一緒に、またはReSharper Ultimateと別々にまたは並行してインストールできる)の専用製品で使用できます。Clang-Tidyは、一般的なClangコンパイラに基づいた強力なオープンソースコード解析ツールです。典型的なプ...

インライン・パラメータ名のヒント

メソッド呼び出しで名前付き引数を書く代わりに、ReSharperのパラメータ名のヒント- メソッド呼び出しで対応する引数の隣にパラメータ名を表示するエディターの装飾 - を利用することができます。ReSharperでは、コード内で名前付き引数を使用することを提案するコードスタイル設定を構成することも...