ReSharper C++ とVisual Assist の比較

このドキュメントでは、ReSharper C++とWhole TomatoのVisual Assistとの違いについてご説明いたします。

どちらの製品も活発に開発されており、製品の機能が定期的に変更されるため、この比較は、比較表のヘッダーに示されている特定のリリースに対して有効であると見なしております。

If you discover any inaccurate items in this table, please post a comment below to let us know, and we'll update the table as soon as possible.

Visual Assist in Visual Studio 2019 + Visual Assist Build 2341
Visual Studio 2019 + ReSharper C++ 2019.2

サポート対象のVisual Studioバージョン

Visual Studio 2019 Visual Studio 2019
Visual Studio 2017 Visual Studio 2017
Visual Studio 2015 Visual Studio 2015
Visual Studio 2013 Visual Studio 2013
Visual Studio 2012 Visual Studio 2012
Visual Studio 2010 Visual Studio 2010
Visual Studio 2008 サポート対象外
Visual Studio 2005 サポート対象外
Visual Studio .NET 2003 サポート対象外
Visual Studio .NET 2002 サポート対象外
Visual C++ 6.0 サポート対象外

サポートされているC/C++仕様

C/C++ C/C++
C++/CLI C++/CLI

コードの問題の検出

タイプミスされたシンボルをハイライト 未解決シンボルをハイライト
問題のあるコード間のナビゲーション(ツールウィンドウ、エディタ) 問題のあるコード間のナビゲーション(ツールウィンドウ、エディタ、専用コマンド)
21のClang-Tidyインスペクション 264の統合Clang-Tidyチェック
該当機能なし 652の統合Clang-Tidy診断
該当機能なし 87の統合Clang Static Analyzerチェック
スペルチェック スペルチェック
対になった区切り文字のハイライト表示 該当機能なし
該当機能なし 一貫性のない命名
ゼロ定数はnullptrで置き換えることができる ゼロ定数はnullptrで置き換えることができる
指定子「override」指定子なしに関数がオーバーライドされている 指定子「override」指定子なしに関数がオーバーライドされている
shared_pointer/unique_pointerのコンストラクタをmake_shared/make_uniqueで置き換えられる make関数ではなくスマートポインタのコンストラクタが使用される
該当機能なし 180個以上の独自コードインスペクション
該当機能なし ほとんどのコンパイラエラーと一部の警告のコードインスペクション
該当機能なし スコープ内のコードの問題の非同期検索
該当機能なし コマンドラインからコードインスペクションを実行

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

使用箇所からの作成 使用箇所からの作成
Add #include グローバル変数、型、型定義、関数、マクロをインポート
宣言を作成 宣言を作成
ケースを修正 該当機能なし
構成可能なインスペクションに対応した10個以上のクイックフィックス 構成可能なインスペクションに対応した120個以上のクイックフィックス

コーディング支援

一致する区切り文字のハイライト表示 対となるアイテムのハイライトprintfboost::format内のマクロ引数とフォーマット引数を含む)
現在の行のハイライト表示 現在の行のハイライト表示
頭字語/ショートハンド CamelHumps
提案リスト/スマート提案 スマート候補を使ったコード補完
「.」の「->」への変換 「.」の->への変換と「->」から「.」への変換
Smart Select 選択範囲の拡張または縮小宣言を含む選択
複数のクリップボード アイテムをプレビューできるクリップボード履歴
パラメータ情報 パラメータ情報
該当機能なし エディタのヒント
強化された構文の色付け(6種類の識別子)/安定したシンボルは斜体/ローカルシンボルは太字 構文のハイライト表示(20種類の識別子)
Highlight References to Symbol Under Cursor ファイル内での使用箇所のハイライト表示
選択範囲を囲む 囲む/行コメントまたはブロックコメント
自動的に括弧を閉じる 一致する区切り文字とフォーマットを自動で挿入
クイック情報(ドキュメント付き) シンタックスハイライト対応のツールチップ(ドキュメント付き)
Auto-extend Multi-line Comments on Enter Enterで/**/ および /// の複数行コメントを自動拡張
mとShiftの後にアンダースコアを挿入 該当機能なし
Enhanced Listboxes 該当機能なし
Highlight Matching Words(コードとコメント) 該当機能なし
Column Indicator(右マージン) 該当機能なし
行の並び替え 該当機能なし
パスを挿入 該当機能なし
コメントからのファイルプレビュー 該当機能なし
エディタズームのリセット 該当機能なし
該当機能なし 現在の行また選択範囲の複製
該当機能なし Postfix Completion(後置補完)
該当機能なし Postfix templates(後置テンプレート)
該当機能なし クイックドキュメンテーション
該当機能なし 関数の終了部分の自動ハイライト表示

コードスタイル支援

貼り付け後にフォーマットVisual Studioのフォーマット規則を継承) どの範囲内でもフォーマット規則を適用する(ReSharper C++独自の豊富なフォーマット規則を使用)
該当機能なし 既存のコードからのフォーマットルール規則の学習
該当機能なし EditorConfigのサポート
該当機能なし Clang-Formatのサポート
該当機能なし スコープ内でcode cleanupを使用してコードスタイルを適用したり冗長コードを削除たりする
該当機能なし 設定可能なファイルヘッダースタイル
該当機能なし 定義済みのスキームで設定可能な命名スタイル(STL、Google、 LLVM、 CamelCase、 Microsoft)
該当機能なし 生成コード内のconst修飾子とvolatile修飾子の設定可能なスタイル
該当機能なし 生成コード内のincludeディレクティブの設定可能なスタイル
該当機能なし 生成コード内のデフォルトのポインタ初期化子の設定可能なスタイル0|nullptr|NULL

リファクタリングとコード変換

リファクタリングコマンドへのアクセス リファクタリングメニュー
名前の変更 名前の変更
署名の変更 署名の変更
Introduce Variable Introduce Variable
Encapsulate Field フィールドのカプセル化(getterとsetterの生成アクション)
Extract Method Extract Method
波括弧の追加と削除 波括弧の追加と削除
Rename Files ファイル名の変更
Move Implementation to Source File 実装ファイルのクラススコープ外への移動
Move Implementation to Header File / Class Declaration 該当機能なし
Move Selection to New File 該当機能なし
Snippets for refactorings (editable) 該当機能なし
Convert Between Pointer and Instance 該当機能なし
Simplify Instance Declaration 該当機能なし
該当機能なし フィールドの挿入
該当機能なし 変数のインライン化
該当機能なし 名前空間エイリアスの導入
該当機能なし typedefの導入/typedefのインライン化
該当機能なし 関数に= default指定子、= delete指定子、pure指定子、virtual指定子を追加
該当機能なし ?:ifへの変換(逆も同様)
該当機能なし #includeディレクティブを山括弧フォームから引用符フォームに変換する(逆も同様)
該当機能なし typedef宣言をエイリアス宣言に変換(逆も同様)
該当機能なし ネストされた名前空間定義に変換
該当機能なし 戻り値の型を末尾の戻り値の型に変換(逆も同様)
該当機能なし 派生型の作成:クラス、インターフェース、 構造体、インターフェースのクラス、インターフェースの構造体、ref クラス、ref 構造体
該当機能なし 関係演算子をフリップ
該当機能なし 演算子の引数をフリップ
該当機能なし コンストラクタパラメータからフィールドを初期化
該当機能なし if宣言の反転
該当機能なし ネストされたifステートメントをマージ
該当機能なし 論理式を否定
該当機能なし 波括弧の削除
該当機能なし 「auto」を明示的な型宣言で置き換える
該当機能なし 「decltype」を基底型で置き換える
該当機能なし 「decltype(auto)」を明示的な型宣言で置き換える
該当機能なし 宣言を分割、または複数の宣言を結合
該当機能なし マクロ呼び出しの置き換え
該当機能なし テンプレートの型エイリアスの置き換え
該当機能なし テンプレート引数を明示的に指定
該当機能なし typedefを置換( 任意ですべてのネストされたtypedefも)

コード生成

Implement Interface / Virtual Methods 欠落しているまたはオバーライドしているメンバを生成
Create Implementation 実装を生成+インライン実装を生成
Create Method Implementations 定義を生成
Add Missing Case Statements 欠落している列挙のケースステートメントを生成
Document Method ドキュメントシンボル
Add Forward Declaration Add Forward Declaration
Add Member 該当機能なし
Add Similar Member 該当機能なし
該当機能なし コンストラクタの生成
該当機能なし copy演算子とmove演算子の生成
該当機能なし ゲッターとセッターの生成
該当機能なし 等値演算子の生成
該当機能なし 関係演算子の生成
該当機能なし ストリーム処理を生成(Boost.Serialization関数を含む)
該当機能なし ハッシュ関数の生成
該当機能なし スワップ関数の生成
該当機能なし Google Mockメソッドの生成
該当機能なし 列挙体を文字列に変換する関数を生成(設定可能)
該当機能なし 派生型の作成

コードスニペット/テンプレート

VAスニペット 30のビルトインのライブテンプレート+カスタムのライブテンプレート
Surround with snippets 19のビルトインの取り囲みテンプレート+カスタムの取り囲みテンプレート
Create File (ヘッダーとcppのため2回呼び出す必要あり) クラスおよび構造体用の組み込みのファイルテンプレート(ヘッダーとcppの両方を同時に作成)+ カスタムファイルテンプレート
スニペット内の予約文字列/環境プレースホルダー コードテンプレート内のマクロ
Snippet Editor テンプレートエディタ
Create Snippet from Selection 選択範囲からライブテンプレートを作成
該当機能なし 複数ファイルのテンプレート

ナビゲーションと検索

宣言に移動(Gotoを使用) 宣言に移動(使用箇所を認識)
実装に移動(Gotoを使用) 実装に移動
VA Outline ファイル構造
最近のファイル(VAビュー) 最近のファイルに移動
Open File in Solution ファイルへジャンプ
Find Symbol in Solution シンボルへジャンプ
GoTo Related 関連ファイルに移動
GoTo Member ファイルメンバーに移動
Move Scope 次または前のメンバーに移動
参照の検索 使用箇所の検索
Find by Context 次の/前のハイライト箇所へ/結果の検索
Open Corresponding File ヘッダーとソースの切り替え
Navigate Back and Forward ナビゲーション履歴の中で移動
VA Hashtags Bookmarks(ブックマーク)
Source Links 外部URLパターンを含むToDo項目
List Methods in File 該当機能なし
VA Navigation Bar 該当機能なし
Hovering Class Browser 該当機能なし
Outputウィンドウ内のプロジェクトファイルをハイライト表示する 該当機能なし
Highlight Find Results 該当機能なし
該当機能なし Search Everywhere(どこでも検索)
該当機能なし テキストに移動
該当機能なし 最近の編集に移動
該当機能なし 前の編集に移動
該当機能なし 移動
該当機能なし 基底シンボルに移動
該当機能なし 派生シンボルに移動
該当機能なし シンボルの型に移動
該当機能なし 近隣ファイルに移動
該当機能なし タイプ階層
該当機能なし インクルードの階層
該当機能なし プライマリテンプレート/特殊化に移動
該当機能なし ソリューションエクスプローラー内で現在のファイルを検索
該当機能なし アクションと設定の検索
該当機能なし ブレークポイントナビゲーションとツールウィンドウ
該当機能なし インクルードアナライザ

デバッグ

ステップフィルタ ステップフィルタ
有効なすべてのブレークポイントを一時的に無効にする 該当機能なし
すべてのブレークポイントを一時的に現在のスレッドにバインドする 該当機能なし
該当機能なし インラインウオッチ
該当機能なし 検索可能なデータヒント

Unreal Engine

UE4プロジェクトのサポート UE4プロジェクトのサポート
UE4リフレクション指定子のスマートな提案 UE4リフレクション指定子のコード補完
該当機能なし UE4リフレクション指定子のクイックドキュメント
UE4リモートプロシージャコールのサポート UE4リモートプロシージャコールのサポート
該当機能なし UE4のRPC関数に対応したRenameおよびChange Signatureリファクタリング
Engineのソースをナビゲーションから除外 該当機能なし
該当機能なし Engineコードの遅延インデックス化
該当機能なし UE4命名規則のサポート
該当機能なし UE4固有のコードインスペクション

ユニットテスト

該当機能なし Google TestCatch 2.5Boost.Testdoctestフレームワークのユニットテスト支援

設定管理

インポートとエクスポートの設定 設定とカスタムテンプレートの自動マルチレイヤ同期