ReSharper 2019.2ヘルプ

C++のコードインスペクションとクイックフィックス

ReSharperのコード解析の主な機能は、C++でもサポートされています。これらの機能の詳細については、コード解析の該当するトピックを参照してください。このセクションの主題では、フィーチャマトリックスを見つけて、C++で正確にサポートされているものを確認することもできます。

このトピックでは、C++でコード解析機能を使用する例をいくつか見てみましょう。

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

コード・インスペクション

ReSharperのスタティックコード解析は、C++ファイルのコンパイラエラーのほとんどとコンパイラの警告を検出します。

また、他のコードの課題を検出します。それ以外の場合は、実行時に検出されます。例:コンストラクターで仮想メソッドを使用すると、このStackOverflowの質問で説明(英語)されているように、予期しない動作が発生します。ReSharperは、コンパイルする前にこの課題を指摘しています。

ReSharper warning. virtual method in constructor

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

Code inspection results in a C++ project

To find out what kind of code inspections ReSharper provides, check out the ReSharper C++コードインスペクションの完全なリスト

コードインスペクションをカスタマイズする方法については、コードインスペクションの設定を参照してください。

クイックフィックス

クイックフィックスを使用すると、コードインスペクションで見つかったコードの課題のほとんどを自動的に解決することができます。コードの課題に対して1つ以上のクイックフィックスが利用可能な場合は、キャレットが強調表示されたコード上にあるときに対応するアクションインジケータが表示されます。目的の修正を確認して適用するには、Alt+Enter を押します。

ReSharperはC++に50を超えるクイックフィックスを提供します。ここではいくつかの例を示します。

使用箇所から作成

宣言されていないシンボルを使用する場合、ReSharperは使用箇所に基づいてシンボルを作成するための1つ以上のクイックフィックスを提案します。

Generating C++ field from usage

宣言を作成する

C++ファイルのメンバー関数がヘッダファイルに宣言を持たない場合、ReSharperは実装のシグネチャーに従って欠落した宣言を作成できます:

Generating declaration for C++ class member

不足している#includeディレクティブを追加する

標準ライブラリーまたはソリューションの他の場所で定義されているシンボルを使用する場合、ReSharperは、欠落している #include ディレクティブを自動的に追加できます。

ReSharper: helps adding missing C++ includes automatically

ReSharperオプション(Alt+R,,O)のコード編集 | C++ | インスペクションページのインポートアクションのポップアップを表示するチェックボックスを使用して、ポップアップを無効にすることができます。チェックボックスが選択されていない場合、対応するアクションは Alt+Enterアクションリストで利用できます。

前方宣言を追加する

ReSharperは、未解決シンボルの前方宣言を生成することもできます。

ReSharper: Add forward declaration quick-fix

未使用の#includeディレクティブを削除する

未使用の #include はすべて強調表示され、クイックフィックスで簡単に削除できます:

Removing unused #include directives

変数を初期化します

ReSharperは初期化されていない変数を検出し、デフォルト値で初期化できます:

ReSharper helps initialize variables in C++

ドット(。)を矢印( - >)に置き換えます。逆も同様です

ドット . 演算子が誤ってポインターに適用された場合、ReSharperはそれを矢印 -> 演算子に置き換えるのに役立ちます。

ReSharper helps replacing the dot operator with arrow

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

ReSharper helps replacing the arrow operator with the dot

変数の型を変更する

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

ReSharper helps fixing types of variables and fields

戻り値の型を変更する

関数の戻り値の型が実際に返される値と一致しない場合、ReSharperでは戻り値の型をすばやく修正できます。

ReSharper helps fixing types of variables and fields

メンバーを初期化する

ReSharperが初期化されていない型メンバーを検出した場合は、1回の修正ですべてのメンバーを初期化することをお勧めします。この修正プログラムのサブメニューを使用して、特定のメンバーの初期化を生成することもできます。

ReSharper C++: quick-fix to initialize members

ReSharperに特定のコードを無視させる

ReSharperでは、特定のファイル、フォルダー、ファイルマスクをさまざまな方法で無視できます。無視されるファイルは、次のオプションページで設定できます。

最終更新日: 2019年8月16日

関連事項

関連ページ:

コード解析

ReSharperは、エディター内の単一のステートメントから、ソリューション全体のアーキテクチャまで、さまざまなレベルのコードを分析できます。コードの課題を見つける:ReSharperは、C#、VB.NET、XAML、XML、ASP.NET、ASP.NET MVC、Razor、JavaScript、...

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

C++のサポートは、ReSharper C++(ReSharperと一緒に、またはReSharper Ultimateと別々にまたは並行してインストールできる)の専用製品で使用できます。ReSharperのコーディング支援機能のほとんどはC++でもサポートされています。これらの機能の詳細については、...

コード・インスペクション

ReSharperはサポートされているすべての言語で2500以上のインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルで設計時にコードの課題を検出して強調表示するため、および/または特定の範囲内ですべてのコードの課題を見つけるために使用されます。インスペクション Re...

設計時にコード課題を検出

ReSharperは、エディターでコード・ファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの課題は、重大度に従ってエディターで強調表示されます。課題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、...

特定の範囲のコード課題を見つける

設計時コードインスペクションは、エディターでコーディングしたり、特定のファイルを見直したりするときに役立ちます。ただし、ReSharperを使用すると、ソリューション全体または狭い範囲でスタティックコード分析を実行し、結果をフレンドリーな視点で調べることもできます。必要に応じてインスペクション結果を...

コードインスペクションの設定

コード注釈を使用して、ReSharperがコードをインスペクションする方法をカスタマイズすることもできます。設計時コードインスペクションの設定:デフォルトでは、ReSharperはサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にするこ...