JetBrains Rider 2024.1 ヘルプ

C++ のコード生成

JetBrains Rider は、定型コードを生成するさまざまな方法を提供します。例: 宣言されていないコードシンボルを使用し、これらのシンボルを用途に基づいて自動的に生成したり、型メンバーを生成したりすることができます。

現在のタイプのメンバー生成オプションは、Alt+Insertコード | 生成)で使用できます。これらおよび他の多くのコード生成アクションは、Alt+Enter使用したコンテキストアクションとしても使用できます。

使用箇所からコードを生成する

JetBrains Rider では、宣言する前にコードシンボル(メソッド、変数、フィールドなど)を使用できます。JetBrains Rider は、宣言されていないシンボルを検出すると、使用箇所に基づいて宣言を生成するための 1 つ以上のクイックフィックス Alt+Enter を提案し、使用箇所のコンテキストに従って宣言をスマートに調整します。

Generating C++ field from usage

コンストラクターを生成

コンストラクター生成ウィザードは、選択されたフィールドのパラメーターを取るデフォルト以外のコンストラクターを作成します。

生成されたコンストラクターはすべて同じパターンに従います。

  • コンストラクターに含まれる各フィールドは、パラメーターで初期化されます。

  • パラメーターの名前は、対応するフィールドの名前から導出されます。

Generating constructors for C++ class

不足しているメンバーを生成する

この生成アクションは、基本抽象クラスで定義された純粋仮想関数のオーバーライドを作成します。

Generating missing members for a C++ class

オーバーライドメンバーを生成する

この生成アクションは、派生クラスに仮想関数のオーバーライドを作成します。

Generating overriding members for a C++ class

メンバーのオーバーライドダイアログでは、目的の機能を選択し、生成された上書きに対して次の設定を行うことができます。

  • 'override' 指定子を挿入してください — 基本クラスの対応する関数を非表示にする関数を生成する場合は、このチェックボックスをオフにすることができます。

  • '仮想' 指定子を挿入は生成されたメソッドを仮想にすることを可能にします。

定義の生成

この生成アクションを使用すると、クラス内で宣言されているが定義を持たないすべてのメンバー関数の定義スタブをすばやく作成できます。

コピー操作と移動操作

この生成アクションは、現在のクラスのオブジェクトのコピーおよび移動方法を定義するコピーコンストラクターおよび operator= 関数を作成します。

Generating copy and move actions for a C++ class

コピー操作と移動操作の生成ダイアログでは、クラスオブジェクトのコピーまたは移動時に考慮する必要がある基本クラスとクラスメンバーを選択し、生成された関数の次の設定を構成できます。

  • へのアクセス権では、publicprotectedprivate アクセス修飾子を選択できます。

  • コピー / 移動操作 — これらのセレクターを使用すると、操作の作成方法を選択できます。デフォルトでは、操作の実装が生成されます。ただし、明示的にデフォルトと削除された関数(英語)として生成するか、宣言のみを生成するか、1 つまたは別の操作をスキップすることができます。

  • スワップベースの割当operator= の実装で swap 関数を使用するには、このチェックボックスを選択します。例:

    Rectangle& operator=(Rectangle other) { using std::swap; swap(*this, other); return *this; }

getter および setter の生成

JetBrains Rider を使用すると、既存のフィールドに基づいて、クラスの getter 関数と setter 関数をすばやく生成できます。

Generating getters and setters for C++ class

getter および setter の生成ダイアログでは、目的のフィールドを選択して、生成された関数の次の設定を構成することができます。

  • へのアクセス権では、publicprotectedprivate アクセス修飾子を選択できます。

  • 種類を使用すると、getter、setter、その両方を生成するかどうかを選択できます。

  • パラメーターの適用を使用すると、生成された setter にパラメーターを渡す方法を選択できます。つまり、const 参照または値による選択です。

  • で戻るでは、生成された getter がフィールドを返す方法を値、参照、const 参照のいずれかで選択できます。

等値演算子を生成する

このコード生成コマンドを使用すると、選択したフィールドを使用して現在のクラスのオブジェクトを比較する operator== および operator== 関数を生成できます。

関係演算子を生成する

このコード生成コマンドは、選択したフィールドを使用して現在のクラスのオブジェクトを比較する operator<operator>operator<=operator>= 関数を生成できます。

ストリーム操作を生成する

このコード生成コマンドを使用すると、選択したフィールドを使用して現在のクラスのオブジェクトのストリーム出力を生成する方法を定義する挿入演算子 operator<< を生成できます。例:

friend std::ostream& operator<<(std::ostream& os, const Rectangle& obj) { return os << "width: " << obj.width << " height: " << obj.height; }

必要に応じて、ostream の代わりに wostream を使用できます。これを行うには、ストリーム操作を生成するダイアログでワイド文字ストリームを使用するを選択します。

ストリーム出力を生成するもう 1 つのオプションは、save()load() または serialize() のような Boost Serialization 関数用のスタブを生成することです。これを行うには、ストリーム操作を生成するダイアログの操作タイプセレクタで目的のオプションを選択します。

ハッシュ関数を生成する

このコード生成コマンドを使用すると、クラスのハッシュ関数を生成できます。2 つのハッシングアルゴリズムのいずれかを選択できます。

  • boost::hash_combine(英語)、例:

    #include <boost/functional/hash.hpp> ... friend std::size_t hash_value(const Rectangle& obj) { std::size_t seed = 0x315E4139; boost::hash_combine(seed, obj.width); boost::hash_combine(seed, obj.height); return seed; }
  • シフトと xor(英語)、例:

    friend std::size_t hash_value(const Rectangle& obj) { std::size_t seed = 0x315E4139; seed ^= (seed << 6) + (seed >> 2) + 0x3449770D + static_cast<std::size_t>(obj.width); seed ^= (seed << 6) + (seed >> 2) + 0x49751560 + static_cast<std::size_t>(obj.height); return seed; }

スワップ関数を生成する

このコード生成コマンドを使用すると、選択したフィールドを使用して現在のクラスのオブジェクトを交換する swap 関数を生成できます。例:

friend void swap(Rectangle& lhs, Rectangle& rhs) { using std::swap; swap(lhs.width, rhs.width); swap(lhs.height, rhs.height); }

Google モックメソッドの生成

このコード生成アクションは、Google Mock(英語) フレームワークを使用してモッククラスを作成するときに、モックメソッド MOCK_METHOD() を自動的に作成します。

Google Mock ヘッダーファイルがインクルードされている場合、派生クラスで使用できるようになります。

モッククラスでは、モックするメソッドを手動で作成する必要はありません。代わりに、GMock メソッドを生成するアクションを呼び出すことができます(これは、Alt+Enterコンテキストアクションとしても使用できます)。

Generating Google Mock Methods

デフォルトでは、すべての基本クラスメソッドが選択されていますが、一部のモックメソッドを生成したくない場合は、対応するチェックボックスをクリアすることができます。

関連ページ:

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

JetBrains Rider のコーディング支援機能のほとんどは、C++ でもサポートされています。これらの機能の詳細については、コーディング支援セクションの対応するトピックを参照してください。このトピックでは、C++ のコーディング支援機能の使用例をいくつか見つけることができます。デフォルトでは、コードインスペクション、クイックフィックス、コンテキストアクションはすべてのソリューションファイルで使用できます。必要に応じて、JetBrains Rider 設定のページにあるソリューション外部...

コードの問題のクイックフィックス

JetBrains Rider を使用すると、設計時に検出されたほとんどのコード問題を即座に修復できます。ハイライトされたコードの問題でを押して、問題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスの適用:クイックフィックスは、ハイライトされたコードの問題の左側にアクションインジケーターとして視覚的に表示されます。これらのインジケーターは、コードの問題にキャレットを置くと表示されます。次のインジケーターは、簡単な修正を意味する

C++ のユニットテスト支援

JetBrains Rider は、次の単体テストフレームワークの単体テストの検出、実行、デバッグに役立ちます。UnrealEngine テストフレームワーク、Google C++ テストフレームワーク、doctest ユニットテストフレームワーク、Catch C++ テストフレームワーク、Boost.Test フレームワーク(v: 1.59 以上)、JetBrains Rider を使用すると、単一の単体テスト、ファイル、プロジェクト、ソリューション内のすべてのテストを実行できます。テストセッ...

コンテキストアクション

コンテキストアクションは、エディターで直接利用できるコード変換ヘルパーです。クイックフィックスとは対照的に、コンテキストアクションは問題の解決やコードの改善を目的としているためはなく、アクセス修飾子の変更、null をチェックするコードの生成、'foreach' の 'for' への変換などの小さな変更を素早く導入できます。JetBrains Rider は、サポートされているすべての言語で数百のコンテキストアクションを提供します。完全なリストは、JetBrains Rider 設定のページお...

C++ の分解図

デバッグセッション中に、逆アセンブルされた C++ コードを開くことができます。ソースが利用可能な場合、任意のフレームに対してオンデマンド、ソースが利用できないときに強制的にそこに踏み込むこと、フレームの分解ビューを開くデバッグツールウィンドウで目的のフレームを右クリックし、逆アセンブルを選択します。逆アセンブリビューがソースコードと並んで開きます。開くと、分解ビューは現在選択されているフレームと同期したままになります。フレームが切り替わると、エディターと逆アセンブリビューの両方が実行ポイントま...