Visual Studio での C++ コードの編集とリファクター

Visual Studio には、コードの作成、編集、リファクターに役立つ複数のツールが用意されています。

IntelliSense

IntelliSense は、入力時にシンボルとコード スニペットの候補を示す強力なコード補完ツールです。 Visual Studio では C++ IntelliSense はリアルタイムで実行され、コードベースの更新時に分析を行い、レコメンデーションを提供します。 文字を多く入力するほど、推奨される結果のリストが絞り込まれます。

Screenshot of the C plus plus member list drop down.

シンボルの中には、結果を絞り込むために自動的に省略されるものもあります。 たとえば、クラスの外部からクラス オブジェクトのメンバーにアクセスすると、既定ではプライベート メンバーを表示したり、子クラスのコンテキストではない場合は、保護されたメンバーを表示することができなくなります。 下部にあるボタンを使用してフィルター処理を調整することができます。

ドロップダウン リストからシンボルを選択すると、Tab キー、Enter キー、または他のコミット文字 (既定: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \) のいずれかでオートコンプリートできます。 このリストから文字を追加または削除するには、クイック起動 (Ctrl + Q) で "IntelliSense" を検索し、[テキスト エディター] > [C/C++] > [詳細設定] オプションを選択します。 [メンバー一覧のコミット文字] オプションを使用すると、好きなように変更してリストをカスタマイズすることができます。

[メンバー一覧のフィルター モード] オプションは、表示される IntelliSense オートコンプリートの候補の種類を制御します。 既定では [あいまい] に設定されています。 あいまい検索では、MyAwesomeClass と呼ばれるシンボルがある場合、「MAC」と入力して、オートコンプリートの候補の中からクラスを検索できます。 あいまいアルゴリズムにより、リストに表示するシンボルが満たす必要がある最小しきい値が設定されます。 スマート フィルター処理では、入力内容に一致する部分文字列を含むすべてのシンボルが表示されます。 プレフィックス フィルター処理では、入力内容で始まる文字列が検索されます。

C++ IntelliSense の詳細については、「Visual C++ IntelliSense の機能」と「IntelliSense の C++ プロジェクトを構成する」を参照してください。

IntelliCode

IntelliCode は、AI 支援 IntelliSense です。 入力候補一覧の先頭に最も可能性が高い候補が配置されます。 IntelliCode レコメンデーションは、GitHub に存在する、それぞれ 100 個以上の星が付いた数千のオープンソース プロジェクトに基づいています。 ご使用のコードのコンテキストと組み合わせると、よくある方法を促進するように入力候補一覧が調整されます。

C++ を記述するときに、IntelliCode は C++ 標準ライブラリのような一般的なライブラリの使用に際して支援を行います。 コードのコンテキストは、最初に最も役に立つレコメンデーションを提供するために使用されます。 次の例では、size メンバー関数は sort 関数とよく併用されるため、結果リストの先頭に提示されます。

Screenshot of C plus plus IntelliCode.

Visual Studio 2022 と Visual Studio 2019 では、IntelliCode は省略可能なコンポーネントとして C++ によるデスクトップ開発ワークロードで使用できます。 IntelliCode を C++ に対してアクティブにするには、 [ツール]>[オプション]>[IntelliCode]>[全般] の順に移動して、 [C++ 基本モデル][有効] に設定します。

Visual Studio 2017 では、IntelliCode は Visual Studio Marketplace で拡張機能として利用できます。

予測 IntelliSense (試験段階)

予測 IntelliSense は、コンテキストの認識を使用して IntelliSense ドロップダウン リストに表示される結果の数を制限する試験段階の機能です。 このアルゴリズムは、予測される入力に一致する結果のみが表示されるように、一致する入力に適用されます。 最も簡単なケースでは、「int x =」と入力して IntelliSense ドロップダウン リストを呼び出すと、整数または整数を返す関数のみが表示されます。 この機能はまだ開発段階のため、既定でオフになっています。 これはグローバル シンボルで最適に機能します。メンバー関数はまだサポートされていません。 オンにするには、クイック起動で「予測」と入力するか、 [ツール]>[オプション]>[テキスト エディター]>[C/C++]>[試験的]>[予測 IntelliSense] の順に移動します。

予測 IntelliSense をオーバーライドして長いリストを表示するには、Ctrl + J を押します。予測 IntelliSense がオンになっている場合に、Ctrl + J を呼び出すと、予測フィルターが削除されます。 Ctrl + J をもう一度押すと、該当するメンバー一覧の結果からアクセシビリティ フィルターが削除されます。 IntelliSense ドリップダウン リストの下にある [+] ボタンは、Ctrl + J と同じことを行います。ボタンをポイントすると、表示されている内容についてのツールヒント情報が表示されます。

Screenshot of C plus plus Predictive IntelliSense.

上のスクリーンショットには、ドロップダウン リストの下にいくつかのボタンが表示されています。 これらは、さまざまな種類の結果に対して IntelliSense フィルターを有効にします。

  • 変数と定数
  • 関数
  • [マクロ]
  • 列挙体
  • 名前空間

ボタンは、現在の IntelliSense セッションに関連がある場合にのみ表示されます。 通常は同時にすべてのボタンは表示されません。

テンプレート IntelliSense

キャレットがテンプレート定義内にある場合は、テンプレート バーが表示され、ここで IntelliSense 用のサンプル テンプレート引数を指定できます。

Screenshot of C plus plus Template IntelliSense Show Existing Instantiations.

テンプレート バーを展開するか折りたたむには、<T> アイコンをクリックします。 [編集] ウィンドウを開くには、鉛筆アイコンをクリックするか、テンプレート バーをダブルクリックします。

Screenshot of C plus plus Template IntelliSense.

ウィンドウで行った編集は、効果をリアルタイムで確認できるように、ソース コードに直接適用されます。

テンプレート バーは、コードでのインスタンス化に基づいて候補を自動設定します。 [既存のインスタンス化をすべて追加する] をクリックして、コード ベース全体でテンプレートのインスタンス化に使用されているすべての具体的な引数のリストを表示します。

Screenshot of C plus plus Template IntelliSense Results List.

エディターの下部にあるウィンドウには、各インスタンスが検出された場所とその引数が何であったかが表示されます。

Screenshot of C plus plus Template IntelliSense Instantiation Map.

テンプレート バー情報は、ユーザー固有として扱われます。 これは .vs フォルダーに格納され、ソース管理にはコミットされません。

エラーの波線とクイック修正

エディターでコードの問題が検出されると、問題の下に色付きの波線が追加されます。 赤い波線はコードがコンパイルされないことを示します。 緑の波線は、重大な影響を及ぼす可能性があるその他の問題の種類を示します。 [エラー一覧] ウィンドウを開いて問題に関する詳細情報を得ることができます。

一部のエラーの種類と、一般的なコーディング パターンに対しては、エディターでクイック修正が提供されます。これは波線をポイントしたときに表示される電球の形で提供されます。 解決策を表示するには、下矢印をクリックします。

次の例では、vector が宣言されましたが、定義が見つからなかったため、エディターによって含める必要があるヘッダー ファイルが提供されます。

Screenshot showing error squiggles and the quick fix that the editor offers.

エディターでは、いくつかのリファクタリングの機会のためのクイック修正も提供されます。 たとえば、ヘッダー ファイルでクラスを宣言すると、Visual Studio により別の .cpp ファイルでその定義を作成することが提案されます。

Screenshot showing the quick fix with the Create definition of Channel Route Iterator in channels dot C P P option highlighted.

Change tracking

ファイルに変更を加えると、左側に黄色のバーが表示され、未保存の変更が行われたことが示されます。 ファイルを保存すると、バーが緑色に変わります。 ドキュメントがエディターで開かれている限り、緑色と黄色のバーは保持されます。 これらは、ドキュメントを最後に開いてから加えられた変更を表します。

Screenshot of C plus plus change tracking.

コードの移動

コード行を上下に移動するには、そのコード行を選択し、Alt キーを押しながら、上方向/下方向キーを押します。

スニペットの挿入

スニペットは、定義済みのソース コードです。 単一のポイント、選択したテキストの上で右クリックすると、スニペットを挿入するか、選択したテキストをスニペットで囲みます。 次の図は、for ループで選択したステートメントを囲む 3 つの手順を示します。 最終的なイメージの黄色のハイライトは、Tab キーでアクセスできる編集可能なフィールドです。 詳細については、「Code Snippets」を参照してください。

Screenshot of C plus plus Insert Snippet Drop down control.

クラスの追加

[プロジェクト] メニューから、またはソリューション エクスプローラーのコンテキスト メニューから新しいクラスを追加します。

Add New Class in C plus plus.

クラス ウィザードを使用して、既存のクラスを変更したり、調べたりすることもできます。

C plus plus Class Wizard.

詳細については、「コード ウィザードを使用した機能の追加 (C++)」を参照してください。

リファクタリング

クイック操作のコンテキスト メニューから、またはエディターの電球をクリックすることで、リファクタリングが利用できます。 [編集] > [リファクター] メニューから利用できるものもあります。 これには次の機能があります。

ClangFormat と EditorConfig を使用したコード スタイルの適用

Visual Studio 2017 以降では、ClangFormat (Clang/LLVM に基づいた C++ 用の一般的なコード書式設定ユーティリティ) の組み込みサポートが付属しています。 クイック起動に「ClangFormat」と入力して、次の一般的な形式のいずれかを使用するように設定します。

  • LLVM
  • Google
  • Chromium
  • Mozilla
  • WebKit
  • Visual Studio

独自の .clang-format または _clang-format ファイルを指定して、同じレベル以下のすべてのコード ファイルにカスタム ルールを適用することもできます。

ファイルは、ソース管理を通じて簡単に共有できるため、開発チーム全体にコーディング規則を適用することができます。

Screenshot showing C plus plus Clang Format.

Visual Studio 2017 以降では、同様の方法で機能する EditorConfig もサポートしています。 ただし、ClangFormat には、C++ 固有のルールなど、EditorConfig よりも多くのスタイル オプションがあります。 EditorConfig を使用して、 .editorconfig ファイルを作成し、それをご使用のコードベースとは別のフォルダーに配置して、これらのフォルダーとそのサブフォルダーにコード スタイルを指定します。 .editorconfig ファイルは、親フォルダー内の他の .editorconfig ファイルよりも優先され、 [ツール]>[オプション] から構成されたすべての書式設定を上書きします。 タブと空白、インデントのサイズなどにルールを設定することができます。 詳細については、「EditorConfig で移植可能なカスタム エディター設定を作成する」を参照してください。

その他の書式設定オプション

クイック起動検索ボックスには、設定やツールを検索する最も簡単な方法が用意されています。 これはメイン メニューにあります。 入力を開始するだけで、オートコンプリート リストにより結果がフィルター処理されます。

Screenshot showing Visual Studio Quick Launch.

インデント、中かっこの補完、色付けなどの書式設定オプションを設定するには、 [クイック起動] ウィンドウに「C++ Formatting」と入力します。

Screenshot showing C++ formatting options.

他の書式設定オプションは、メイン メニューの [編集]>[詳細設定] で見つかります。

Screenshot showing C++ advanced editing options.

C++ 固有の編集機能の有効化と構成のオプションは、 [ツール]>[オプション]>[テキスト エディター]>[C/C++] にあります。 設定するオプションを選択した後、ダイアログにフォーカスがあるときに F1 キーを押すと、詳細なヘルプを表示できます。 コードの一般的な書式設定オプションを確認するには、 [クイック起動] に「Editor C++」と入力します。

Screenshot showing Visual Studio Tools > Options dialog editor options.

将来のバージョンの Visual Studio に含まれる場合とそうでない場合がある実験用の機能は、[テキスト エディター]、[C++]、[実験用] ダイアログにあります。 Visual Studio 2017 以降では、このダイアログで予測 IntelliSense を有効にすることができます。

関連項目

C++ コードの読み取りと理解
Visual Studio で C++ コード間を移動する
Live Share for C++ を使用しての共同作業