C++ でのコード分析
JetBrains Rider のコード解析の主な機能は、C++ でもサポートされています。 これらの機能に関する詳細情報は、 コード解析 セクションの対応するトピックにあります。 このセクションのサブジェクトでは、フィーチャマトリックスを見つけて、C++ で正確にサポートされているものを確認することもできます。
このトピックでは、C++ でコード解析機能を使用する例をいくつか見てみましょう。
デフォルトでは、 コードインスペクション、 クイックフィックス、 コンテキストアクションはすべてのソリューションファイルで利用できます。 必要に応じて、JetBrains Rider 設定 Ctrl+Alt+S の ページにある ソリューション外部のファイルでインスペクション、クイックフィックス、コンテキストアクションを有効にする チェックボックスを使用して、ソリューションから参照される外部ファイルでこれらの機能を有効化できます。
コードインスペクション
JetBrains Rider の静的コード解析は、C++ ファイル内のほとんどのコンパイラーエラーと一部のコンパイラー警告を検出します。
さらに、実行時に見つかる他のコードの問題も検出します。 例: コンストラクターで仮想メソッドを使用すると、 この StackOverflow の質問(英語)で説明したように予期しない動作が発生します。 JetBrains Rider は、コンパイルする前にこの問題を指摘します:

分析は、 コードインスペクション を 現在の文書または指定された範囲に適用することによって実行さ れます。

JetBrains Rider が提供するコードインスペクションの種類を調べるには、 JetBrains Rider C++ コードインスペクションの全リストを確認してください。
コードインスペクションの詳細については、「コードインスペクション設定を構成する 」を参照してください。
特定のインスペクションをすばやくオフにするか、すべてのインスペクションを非表示にするには、インスペクションコンテキストメニューを使用します。

JetBrains Rider 固有の属性で一部のインスペクションを抑制することもできます。 詳細については、 属性を使用してインスペクションを絞り込むセクションを参照してください。
クイックフィックス
クイックフィックスを使用すると、コードインスペクションで見つかったコードの問題のほとんどを自動的に解決することができます。 コードの問題に対して 1 つ以上のクイックフィックスが利用可能な場合は、キャレットがハイライトされたコード上にあるときに対応する アクションインジケータが表示されます。 目的の修正を確認して適用するには、 Alt+Enter を押します。
JetBrains Rider は、C++ に対して 290 を超えるクイックフィックスを提供します。 ここではいくつかの例を示します。
不足している #include ディレクティブを追加する
標準ライブラリまたはソリューション内の他の場所で定義されているシンボルを使用する場合、JetBrains Rider は、欠落している #include ディレクティブを自動的に追加できます:

JetBrains Rider 設定 Ctrl+Alt+S の ページにある インポートアクションのポップアップを表示する チェックボックスを使用して、ポップアップを無効化できます。
チェックボックスが選択されていない場合、 Alt+Enter を押すと、 対応するアクションがアクションリストで使用可能になります。
前方宣言を追加する
JetBrains Rider は、未解決のシンボルの事前宣言も生成することができます:

[[maybe_unused]] を追加
[[maybe_unused]] 属性を追加して、未使用の名前またはエンティティに関するコンパイラーからの警告を回避できます。 キャレットが未使用のエンティティ上にある場合、次のクイックフィックスが利用可能になります:
![[[maybe_unused]] を追加](https://resources.jetbrains.com/help/img/rider/2026.1/maybe_unused_attr.png)
また、別のコンテキストアクションは、 UNREFERENCED_PARAMETER および Q_UNUSED の使用を [[maybe_unused]] 属性に置き換えるのに役立ちます。
![[[maybe_unused]] を追加](https://resources.jetbrains.com/help/img/rider/2026.1/unreferenced_parameter.png)
キャプチャーリストに追加
ローカル変数がラムダ本体内で使用されているが、このラムダでキャプチャーされていない場合、JetBrains Rider はキャプチャーリストを更新するクイックフィックスを提案します。 値または参照によって変数または this をキャプチャーするか、使用されているすべての自動変数を暗黙的にキャプチャーできます。

戻り値の型を変更する
関数の戻り値の型が実際に返す値と一致しない場合、JetBrains Rider を使って戻り値の型をすばやく修正できます:

変数型の変更
変数またはフィールドの指定された型が割り当てられた値と一致しない場合、JetBrains Rider は宣言で正しい型を使用するためのクイックフィックスを提供します:

宣言を作成する
C++ ファイルのメンバー関数がヘッダーファイルに宣言されていない場合、JetBrains Rider は実装のシグネチャーに従って不足している宣言を作成できます:

使用箇所から作成
宣言されていないシンボルを使用する場合、JetBrains Rider は使用箇所に基づいてシンボルを作成するクイックフィックスを提案します:

メンバーを初期化する
JetBrains Rider が初期化されていない型メンバーを検出した場合、すべてのメンバーを一括で初期化することを提案します。 この修正プログラムのサブメニューを使用して、特定のメンバーの初期化を生成することもできます。

変数の初期化
JetBrains Rider は初期化されていない変数を検出し、デフォルト値で初期化できるようサポートします:

未使用の #include ディレクティブを削除する
未使用の #include はすべてハイライト表示され、クイックフィックスで簡単に削除できます:

未使用のラムダキャプチャーを削除する
ローカル変数がラムダによってキャプチャされているがラムダ本体で使用されていない場合、JetBrains Rider は通知し未使用のキャプチャの削除を提案します:

ドット(.)を矢印(->)に、またはその逆に置き換えます
ドット 。 演算子が誤ってポインターに適用された場合、JetBrains Rider はそれを矢印 -> 演算子に置き換えるのを支援します:

逆のクイックフィックスも利用できます:

ラムダで明示的なテンプレートパラメーターを使用
JetBrains Rider は、ラムダが新しい C++20 テンプレート構文で書き換え可能なタイミングを検出します:

パラメーターの型が右辺値参照の場合、その型を直接 std::forward に渡すことができます。 この場合、使い慣れた完全な転送構文を使用できます。

static_cast を使用する
JetBrains Rider は static_cast を優先すべき場合を検出し、コードの更新を支援します:
C++ キャストの代わりに関数型キャストが使用されています:

void*にキャストする際、static_castの代わりにreinterpret_castが使用されています:
属性を使用してインスペクションを調整する
JetBrains Rider 固有の属性をソースコードのシンボルに追加することで、JetBrains Rider によるソリューションの解析をより高い精度とインサイトで行えるようになります。 JetBrains Rider では、次のカスタム属性 [[jetbrains::format]]、 [[jetbrains::guard]]、 [jetbrains::pass_by_value]]、 [[jetbrains::has_side_effects]] を使用できます。
[[jetbrains::format]] 属性を使用すると、カスタム printf-like 関数の形式インスペクションを有効にすることができ、 [[gnu::format]] と同様に機能します。
![[[jetbrains::format]] [[jetbrains::format]]](https://resources.jetbrains.com/help/img/rider/2026.1/format_attribute.png)
[[jetbrains::pass_by_value]] 属性を使用すると、「const 参照による値の受け渡し」インスペクションを抑制できます。 コメントでインスペクションを無効にする代わりに、抑制属性を使用するのはなぜでしょうか。 特定のクラスまたは構造体の警告を表示したくない場合は、いつでも Alt+Enter メニューから を選択して、現在の行またはファイルでインスペクションを抑制するコメントを追加できます。 その後、すべてのクラスの使用に対しても抑制コメントを追加する必要があります。 このような場合、クラス宣言で抑制属性を 1 回指定する方がはるかに簡単です。
![[[jetbrains::pass_by_value]] [[jetbrains::pass_by_value]]](https://resources.jetbrains.com/help/img/rider/2026.1/pass_by_value_attribute.png)
[[jetbrains::guard]] 属性を使用すると、「ローカル変数は使用されない」インスペクションを抑制できます。 この属性でクラスをマークすると、JetBrains Rider にコンストラクターで重要な処理が行われることを知らせることができます。
[[jetbrains::has_side_effects]] 属性を使用すると、 operator= に副作用があるとしてマークを付け、「割り当てられた値は使用されない」インスペクションを抑制できます。
外部ライブラリのライブラリクラスに JetBrains Rider 属性を適用する必要がある場合、代わりに前方クラス宣言でその属性を使うことができます: class [[jetbrains::pass_by_value]] my_class;。
コンパイラーが不明な属性に関する警告を表示した場合は、 __JETBRAINS_IDE__ マクロまたは __RESHARPER__ マクロを使用して宣言を保護できます。
JetBrains Rider に特定のコードを無視させる
ソリューションのコードの一部をコード解析、ナビゲーション、その他の機能から除外するために、JetBrains Rider では さまざまな方法で特定のファイル、フォルダー、ファイルマスクを無視できます。