ReSharper 2026.1 ヘルプ

C++ /CLI サポート

C++/CLI は、Microsoft による C++ 言語拡張のセットであり、マネージドコードとネイティブコード間の容易な相互運用性を実現するために設計されています。ジェネリクス、値クラスと参照クラス、ハンドル、追跡参照、インターフェース、その他の構文追加が含まれています。

ReSharper は、コード分析ナビゲーションと検索コーディング支援、および C++ で慣れているその他の機能のメインセットに加えて、C++ /CLI 固有のケースに対する追加のサポートを提供します。

検索とナビゲーション

C++ /CLI は言語間のブリッジであるため、ReSharper は、相互運用性を向上させるための言語間のナビゲーション機能を提供します。

派生シンボルに移動は、C++ /CLI プロパティ内の get/set 関数および C++ /CLI イベント内の add/remove 関数でも機能します。

Go to Derived in C++/CLI

コード解析

ReSharper には、C++ /CLI 固有の言語構造用のインスペクションのセットが含まれています。

  • インターフェースメンバーの virtual 指定子がない場合、または public アクセシビリティがない場合は、警告が表示されます。

    Method must be public and virtual
  • ReSharper はメモリの割り当て方法をインスペクションし、ターゲットタイプが無効な場合に gcnewnew に置き換えるためのクイックフィックスを提案します。また、newgcnew に置き換える場合にも機能します。

    Cannot use gcnew on a native type
  • ReSharper は、マネージクラスまたはインターフェースで C++ final 指定子を使用しようとすると警告を発し、代わりに sealed にするためのクイックフィックスがあります。

    Replace final with sealed

C++ /CLI の便利なクイックフィックスもいくつかあります。例: C++ /CLI の safe_cast 演算子は、基本クラスから派生クラスにダウンキャストする場合に特に便利です。safe_cast は動的チェックを実行し、変換が失敗した場合は InvalidCastException をスローします。クイックフィックスを使用して、C スタイルのキャストを safe_cast に変換できます。

C-style cast used instead of a C++ cast

インレイヒント

パラメーター名型名のヒントに加えて、ReSharper は、マネージドヒープへの割り当てをもたらす C++/CLI ボックス化変換の型変換ヒントを提供します。標準変換のこのようなヒントは既定では無効になっていますが、ReSharper オプション Alt+R, O環境 | インレイヒント | C++ | 型変換のヒントページで有効にすることができます。

C++/CLI boxing conversions

フォーマットスタイル

追加のフォーマット設定により、C++ /CLI の一般的な制約のスタイルを構成できます。優先インデントを選択し、必要に応じてスペースを追加し、改行を強制します(コード編集 | C++ | スタイルのフォーマット)。

generic <class ItemType> where ItemType:IItem ref class Stack {};
generic <class ItemType> where ItemType : IItem ref class Stack {};

後置補完

一部の C++置テンプレートは、そのコンテキストで呼び出されたときに C++ /CLI コードを生成するように特別に設計されています。

  • .gcnew を使用して、型のインスタンス化式を生成します。

  • .safe_cast を使用して、式を .safe_cast で囲みます。

既知の問題と制限

2024 年 5 月 26 日

関連ページ:

コードインスペクションでコードの問題を見つける

ReSharper の静的コード分析はコードインスペクションと呼ばれ、サポートされているすべての言語のコードに 2300 を超える個別のコードインスペクションを適用することによって実行されます。コードの問題はいくつかの方法で見つけることができます:ReSharper は、エディターで開かれたすべてのファイルについて、設計時に自動的にコードの問題を見つけてハイライトします。デザインタイムコードインスペクションのスコープは、ソリューション全体の分析を使用してソリューション全体に拡張できます。この場合...

C++ でのナビゲーションと検索

名前によるナビゲーション:ReSharper を使用すると、いくつかのキーストロークで任意のコードアイテムまたはファイルを表示できます。ナビゲーションの範囲には、ソリューション全体のシンボルとファイル、標準ライブラリとライブラリのすべてのシンボルとファイル、外部依存関係が含まれます。ソリューション内のコードアイテムを名前で検索するすべての検索結果への統合アクセスを使用するには、を押して、入力を開始し、入力に一致するソリューション内のコード項目を見つけることができるポップアップを表示します。検

C++ のインレイヒント

パラメーター名ヒント:パラメーター名のヒントは、メソッド呼び出しで対応する引数の横にパラメーター名を表示するエディターの装飾です。これらは、関数呼び出しと集計の初期化でパラメーターの長い(場合によってはネストされた)リストを見つけるのに役立ちます。以下の例では、パラメーター名のヒントは、高さと幅の引数が混在しているという事実を見つけるのに役立ちます。パラメーター名のヒントは、初期化するメンバーの名前を示し、C++17 以降の複雑な集約の初期化を解くのに役立ちます。パラメーター名のヒントは、依存...

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

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

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

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