ReSharper C++はC++開発者向けにオンザフライ分析、クイックフィックス、強力な検索とナビゲーション、スマートなコード補完、リファクタリング、様々なコード生成オプションなどの日々の生産性を向上させる機能を提供することで、Visual StudioをよりよいIDEにします。
ReSharper C++は、Visual Studioエディタでプロジェクトを開くとすぐにコード解析を開始し、ファイルを編集するときにファイルの再解析を続け、さらにコンパイルする前にエラーや潜在的な問題を検出いたします。
40個以上のクイックフィックスを利用して、検出されたコードの問題の多くを即座に解決できます。 コードの左側に電球が表示されたら常に、Alt+Enterを押して提案されたクイックフィックスを適用できます。
例えば、初期化されていない変数が検出されたら、すぐにデフォルト値で初期化できます。 その他のクイックフィックスでは、欠けている#include
ディレクティブを追加したり、特定のステートメント内、あるいはファイルやソリューション全体などのより大きなスコープ内の冗長な修飾子を削除したりできます。
クイックフィックスのもう1つの利点は、宣言する前にクラス、メソッド、変数、プロパティ、フィールドを使い始めることができるということです。 ReSharper C++が宣言されていないシンボルを検出すると、その使用箇所に基づいて対応するシンボル宣言を生成するためのクイックフィックスを提案いたします。
ファイル、プロジェクト、またはソリューションなどの任意のスコープに対して、ReSharper C++に、検出したすべてのコードの問題を専用のツールウィンドウに表示するように指示できます。
Find Code Issuesはバックグラウンドで動作するので、ReSharper C++が分析を実行しInspection Resultsツールウィンドウを生成する間、コードの編集や移動を続けられます。
解析結果が準備でき次第、さまざまな基準でそれらをグループ化して検索し、特定の種類の問題を見つけることができます。 Find Code Issues結果のレポートを保存したりロードしたりすることもできます。
また、ReSharper C++のコードインスペクションは、InspectCodeからも利用できます。これは無料のコマンドラインツールで、Visual Studioの外部でReSharperインスペクションを実行できるようにするものです。
InspectCodeを使用するには、コマンドラインツールのパッケージをダウンロードして解凍し、ソリューションファイルをパラメータとしてInspectCode.exeを実行してください。 InspectCodeの使い方の詳細については、こちらの記事をお読みください。
ReSharper C++は、Clangコンパイラを基にしたオープンソースの強力なコード分析ツールであるClang-Tidyとシームレスに統合されています。 この統合により、コード確認とクイックフィックスが提供されています。
ReSharper C++ には、ReSharper を選択したコードスタイルに準拠させ、コードベース全体を通して適用させるための構文スタイル設定一式が含まれています。
構文スタイルの設定は、Code Editing | C++ | Syntax Style ページで調整できます。 選択したオプションの値は、コード生成とコードスタイルの適用の両方に使用されます。
ReSharper C++ will highlight style violations and offer you quick-fixes to help eliminate them. 構文スタイルに関するすべてのクイックフィックスは、関数本文やクラス定義などのローカルスコープを含む指定のスコープで適用できます。
選択した構文スタイルを適用するには、コードのクリーンアップか専用の Apply Syntax Style(構文スタイルの適用)アクションを使用できます。後者は作業中のコンテキストに応じて、選択範囲、作業中のファイル全体、ファイル一式の構文スタイルに関する問題を解決します。
ReSharper C++は、名前の変更、メソッドの抽出、シグニチャの変更など、本格的なリファクタリング機能を複数提供します。 また、ローカルのコード変換がショートカットひとつで利用可能なコンテキストアクションもご用意しています。
クラスやマクロの名前の変更を手動で行うと、たくさんの問題を引き起こすことがありますが、 Rename リファクタリングを呼び出すと、 ReSharper C++が必要なチェックをすべて行ってくれます。
変更をすべて自動的に実行するか、競合の一覧が表示され、これらを手動で解決し、必要で適切な変更のみを確実に行うこともできます。
適用する実際のコードシンボルに加えて、名前の変更リファクタリングは、関連ファイル(ソースファイルとヘッダーファイルの両方)およびコメントとドキュメントの関連テキストの名前を変更できるだけでなく、#include
ディレクティブの使用箇所の更新もできます。
Extract Methodリファクタリングは、選択したコードフラグメントに基づいて新しいメソッドを作成するのに役立ちます。 ReSharperは選択されたコードブロックを分析し、メソッドパラメータに変換できる変数を検知したり、戻り値を表す変数を検知したりします。
Change Signatureを使用すると、関数のシグニチャに1つ以上の変更を適用できます。 それに応じて、関数のすべての使用箇所、実装、およびオーバーライドが更新されます。
Introduce Variableリファクタリングを使用すると、選択した式に基づいて新しいローカル変数を作成し、それを式で初期化して、最後に、コード内の式のすべての出現箇所を新しく導入された変数への参照に置き換えることができます。
逆に、Inline Variableは、指定された変数またはローカル定数のすべての出現箇所をその初期化子に置き換えます。
フィールドの導入リファクタリングは、選択した式に基づいて新しいフィールドを作成し、独自の初期化子またはコンストラクタで元の式をフィールドに代入し、出現箇所を置換するのに役立ちます。
Introduce Namespace Aliasリファクタリングは、深くネストされた名前空間のショートカット名を定義するのに役立ちます。
リファクタリングを呼び出すとすぐに、ネームスペースエイリアスを導入したいスコープを定義するように提案されます。
Introduce typedefリファクタリングにより、選択したデータ型のtypedef
を素早く作成し、このデータ型とそのすべての出現箇所を新しく作成されたtypedefに置き換えることができます。
Inline typedefリファクタリングはその逆を行います。つまり、既存のtypedef
を実際のデータ型に置き換えます。
リファクタリングに加えて、ReSharper C++は一連のコンテキストアクションをご提供いたします。これは、ローカルコード変換で、通常、代替構文オプション間の切り替えに役立ちます。 クイックフィックスと同じように、Alt+Enterを押せば利用できます。
例えば、auto
を明示的な型に、あるいは型をauto
に素早く置き換えられます。 その他のコンテキストアクションでは、ネストされたif
ステートメントのマージ、列挙との切り替えの際に欠落しているcase
ステートメントの生成、マクロ呼び出しまたはtypedef
の置き換えなどができます。
ReSharper C++は、Visual Studioの構文を強調表示し、コードの構造部分を一致させる方法を拡張し、独自のコード補完の実装を提供し、C++シンボルの利用可能なドキュメントを視覚化いたします。
ReSharper C++は、ソリューション内の*.c、*.cc、*.cxx、*.cpp、 *.h、および*.hppファイルを認識し、これらのファイルのソースコードを、任意に変更できるカラースキームに従ってハイライト表示いたします。
さらに、ReSharper C++は、キャレットを対になる1つの項目に配置すると、一致するさまざまな項目を強調表示いたします。例えば、一致する区切り文字、マクロ、またはprintf
関数呼び出しの形式指定子と引数です。
キャレットを関数、ループ、またはswitch
文(return
、throw
、break
など)の出口点の1つに置くと、ReSharper C++は他のすべての関数またはループの出口を自動的に強調表示するようになりました。
C++ファイルでは、コードを記述するときにコード補完を使用できます。これにより、他の選択肢の中からコード生成オプションが提案されることがあります。
コード補完は、現在のファイルにまだ含まれていないシンボルを示唆することもできます。 補完リストでこのようなシンボルを選択すると、対応する#include
ディレクティブが自動的に追加されます。
シンボルの定義に移動しなくても、Ctrl+Shift+F1を押すだけでDoxygen のコメントブロックに基づいたドキュメントがQuick Documentationポップアップに表示されます。
シンボルに関するDoxygenのドキュメントがない場合でも、クイックドキュメントにはシンボルのシグニチャが表示されます。
また、ReSharper C++は、C++コード要素の構文が強調された豊富なツールチップも表示できます。 このツールチップには、関数と変数のタイプ、およびドキュメントが表示されます。
また、C#スタイルのXMLドキュメントのコメントは、C++シンボルにも使用されることがあります。 ReSharper C++は、Quick Documentationポップアップと quick infoツールチップにそれらを正しく表示します。
C++/CLIはMicrosoft社によるC++言語拡張機能のセットで、マネージコードとネイティブコード間の相互運用を容易にするためのものです。 マネージ言語とC++の両方に対して広範なサポートを提供するReSharperは、C++/CLIでのコーディングにも役立ちます。
C++/CLIコード内で、純粋なC++コードとまったく同じすべてのリファクタリングとインテンションアクションにアクセスできます。 C#とC++/CLI間で移動することもできます。
ReSharper C++では、ソースコード内での検索がとても簡単になります。 単純なショートカットを使って、宣言、メンバー、メソッド呼び出し、または継承階層のメンバーを検索するだけです。
宣言と定義が別々になっているすべてのシンボルに対し、ReSharper C++はNavigate to declaration/definitionアイコン()を左側に表示します。 アイコンをクリックするか、Ctrl+Bを押して、宣言と対応する定義を素早く切り替えます。
ReSharper C ++のその他のコンテキスト依存型ナビゲーションオプションには、選択したシンボルからその使用箇所、ベースまたは派生シンボルへのナビゲーションが含まれます。
ReSharper C++には、Go to File、Go to Symbol、Go to File Member、Go to Everythingといった一連のコンテキストに依存しないナビゲーションコマンドが用意されています。
これらのコマンドはすべて、ローワーキャメルケースベースの検索とパスによるフィルタをサポートします。 例えば、すべてに移動ポップアップにfc movie
を入力すると、movieという文字列が名前に含まれており、FollowerCプロジェクトまたはFollowerConstants名前空間(どちらもfc
に一致)に属するファイルとファイルメンバの一覧が返されます。
ReSharper C++は、指定された型が一部となっている継承階層の概要を提供いたします。 基本型と、選択した型の継承型の両方を表示し、ワンクリックでそれらのいずれかに移動できます。
また、ReSharper C++には hierarchy view が付属しています。これは、#includeディレクティブ
によって導入された依存関係を可視化し、把握するのに役立ちます。
Find Usagesを使って、ソリューションのC++コード内にある特定のシンボルの参照をすべて検索できます。
検索が完了するとすぐに、見つかった出現箇所が、グループ化オプションとフィルタリングオプション、およびプレビューペインを備えたツールウィンドウに表示されます。
ReSharper C ++では、File Structureウィンドウを使用して現在のドキュメントの構造を表示できます。これにより、大きなファイルでのナビゲーションが大幅に簡素化されます。
別のエディタタブに切り替えると、ツールウィンドウに対応するファイルの構造が表示されます。
To-doエクスプローラーツールウィンドウでは、3つのデフォルトのTo-Doパターン(バグ、Todo、および未実装)のいずれか、およびセットアップしたい可能性のあるカスタムパターンを含むコメントの表示、グループ化、および絞り込みができます。
完全なReSharper Ultimateライセンスをご使用で、多言語ソリューションをお持ちの場合、To-doエクスプローラーは、サポートされているすべての言語、例えば、C#、VB.NET、C++、JavaScript、XAML、HTMLなどからto-do項目を収集いたします。
ReSharper C++には、ボイラープレートコードを生成する様々な方法があります。 既存の使用箇所に基づいてシンボルを宣言および定義することに加えて、型メンバー、囲むコードブロック、およびコードベースで通常必要なコードスニペットを作成できます。
ReSharper C++は、欠落しているメンバー、オーバーライドするメンバー、等値演算子または関係演算子、既存の宣言に基づく定義、ハッシュ関数とスワップ関数、およびコンストラクタを素早く生成する方法をご提供いたします。
テキストエディタでAlt+Insを押すだけで、Generateメニューが起動し、使用可能なすべてのオプションが表示されます。
ReSharper C++には29個のカスタマイズ可能なテンプレートが付属しております。 通常のコードスニペットもあれば、コードの選択範囲をラップするために特に使用されるものもあります。
ファイルテンプレートも使用および作成できます。 Ctrl+Alt+Insを押すと、作業中のプロジェクトにクラスを素早く追加するのに役立ちます。
ReSharper C++を使用すると、コードフォーマッタはあなたの既存のコードから学習し、フォーマットとコードスタイルの設定をチームメンバーと共有できます。
ReSharper C++を使用すると、特定のソリューションで作業するときに使用したいコードフォーマットルールを設定および適用できます。
使用可能なすべてのコードフォーマットオプションを調べる代わりに、コードブロックを選択し、この特定のブロックに適用可能なもののみを構成できます。
チーム全体で一貫したコードスタイルを確保するために、フォーマットと命名の設定を設定ファイルに保存し、チームメイト間で共有できます。
また、ReSharper C++では、修飾子の順序やポインタ初期化子の優先値など、チームコーディング標準の他の部分を定義することもできます。 例えば、0
、nullptr
、またはNULL
を優先初期化子スタイルとして指定できます。そうすると、ReSharperC++は、新しい初期化子を生成する際にあなたの選択を尊重いたします。
ReSharper Options | Code Editing | C++ | Naming Style を使用して、事前定義されたC++命名スタイル、つまり、STL、 Google、 LLVM、CamelCase、Microsoftから1つ選択します。
多くの場合、単に既存のコードからフォーマット設定を検出して、フォーマット設定をカスタマイズする方がはるかに簡単です。 ReSharper | Edit | Detect formatting settings メニューを使用して、ReSharperにコードフォーマット設定を検出させます。 検出された値を含むツールウィンドウが表示されます。これを確認し、お使いのマシンのReSharper設定に適用できます。 または、それらをチーム共有設定レイヤーに保存して、チームの他の開発者が現在のソリューションを開くときに同じコードフォーマット構成を持つようにできます。
Visual Studioに統合されたユニットテストランナーは、Google Test、Boost.Test、CatchおよびDoctestフレームワークをサポートしています。
ReSharper C++には、Visual Studioのユニットテストランナーが付属しており、Google Test、Boost.Test、Catch、およびDoctestフレームワークをサポートしています。
Alt+Enterコンテキストメニューを使用して、テキストエディタから直接、ユニットテストを実行およびデバッグしたり、様々なセッションにテストを追加したりできます。
ReSharper C++には、Unit Test ExplorerとUnit Test Sessionsツールウィンドウが用意されており、ユニットテストの表示、グループ化、フィルター処理、実行、およびユニットテストセッションの作成と管理ができます。
Unreal Engine ベースのゲームを制作している場合は、Unreal Engine に特化したサポートを ReSharper C++ 内で受けられます。
UE ベースのコードに対応した新しいコード解析チェックもいくつか追加しました。これらは特に、欠落している、または正しく設定されていない UE のリフレクションマクロを対象としています。
ReSharper C++ は UnrealHeaderTool とのシームレスな連携機能を提供し、より多くの Unreal Engine 固有のコードの問題をエディター内で直接捕捉できるようにします。 Unreal Engine プロジェクトで作業する際には編集中のファイルに対して UnrealHeaderTool が自動的に実行され、他のインスペクションと同様にエラーや警告が表示されます。 UnrealHeaderTool 統合の様子を実際にご覧ください。
Unreal Engineのリフレクションマクロを簡単に使えるよう、ReSharper C++ではリフレクションマクロ内でリフレクション指定子の補完を提供しています。
キャレットを UE リフレクション指定子の上に置くと、そのリフレクション指定子に対応する組み込みのドキュメントが Quick Documentation ポップアップ (Ctrl+Q) に表示されます。
ReSharper C++は、UFUNCTION
宣言文内のClient
、Server
、またはNetMulticast
キーワードによってRPCを識別します。 そのような関数の場合、ReSharper C++は_Implementation
関数だけでなく、WithValidation
が設定されている場合は_Validate
関数も生成する必要があることを認識しています。 両方が欠落している場合は両方を生成でき、一方が欠落している場合は1つのみを生成できます。
定義に移動する際に、両方の関数(_Validate
と_Implementation
)が提案されます。 これらのオプションは、Alt+Enterメニューでも “Related UE functions” としてアクセスできます。
現在のスコープで利用できないシンボルを使用すると、ReSharper C++はそのシンボルを赤でハイライト表示し、可能な時は欠落している#include
を追加するよう提案します。 ヘッダーファイルで#include
が欠落していると、インクルード一覧の一番最後となる.generated.h
の前に挿入されます。 誤って配置された#include
は、対応するインスペクションによって強調表示されます。
Unreal Engine プロジェクトの Rename リファクタリングは対応する .generated.h
include ディレクティブと A
、F
、E
、T
、S
、および U
で始まる関連ファイル を更新します。
UCLASSes
の「新しい」後置テンプレートは、適切なfactory関数呼び出し(作成されたオブジェクトをガベージコレクターに登録する)に対応しています。 USTRUCT/UCLASS/UENUM/UENUMCLASS
を素早く生成するのに役立ち、それぞれに対応する名前を持つライブテンプレートをご利用いただけます。
Unreal Engine USF ファイルは HLSL に基づくもので、マルチプラットフォーム対応のシェーダーコードが含まれます。 これらのファイルには、通常、仮想ファイルパスが含まれていますが、ReSharper C++ では仮想ファイルパスを使用することができ、一般的なアクションがすべてサポートされています。
SpatialOS Game Development Kit は Unreal Engine 4 のフォークで、クラウドでオンラインゲームを実行したり管理したりすることができます。 ReSharper C++ は CrossServer、SpatialType、NonSpatialType、およびその他の SpatialOS の指定子を認識します。 詳細はこちら。
ReSharper C++ は、HLSL(ハイレベルシェーディングランゲージ)の初期サポートを提供しています。 ReSharper C++ は、デフォルトのカラースキームに従って HLSL コードをハイライトし、コード要素、型情報、およびドキュメントに関するインレイヒントとツールチップを表示します。 また、ソリューション全体、参照ファイル、および標準ライブラリの構造体、関数、またはパラメータを検索して素早く移動することもできます。 さらに、HLSL のエクスペリエンスを完全化するために、ReSharper C++ は、スマートコード補完、対応区切り文字の自動挿入などを提供しています。
ReSharper の制御フロー解析を HLSL シェーダーファイルで利用できるようになりました。全機能を利用できるため、到達不能コード、初期化不能変数、重複する制御フローのジャンプ、条件付きブランチなどの警告が備わっています。
無料 30 日間体験版をご利用可能です