Visual Studio には、強力な統合された一連のプロジェクトビルドおよびデバッグ ツールが含まれています。 この記事では、ビルド出力、コード分析、デバッグ ツール、単体テストを使用して、Visual Studio がコード内の問題を見つけるのにどのように役立つかについて説明します。
エディターを理解し、いくつかのコードを作成しました。 次に、コードが正しく動作することを確認します。 Visual Studio では、ほとんどの IDE と同様に、コードを動作させるには 2 つのフェーズがあります。プロジェクトとコンパイラのエラーをキャッチして解決するコードをビルドし、コードを実行して実行時エラーと動的エラーを見つけます。
コードをビルドする
ビルド構成には、 デバッグ と リリースの 2 つの基本的な種類があります。 デバッグ構成では、より低速で大規模な実行可能ファイルが生成され、より高度な対話型ランタイム デバッグ エクスペリエンスが可能になります。 デバッグ実行可能ファイルを配布しないでください。 リリース構成では、(少なくともコンパイラの観点から) 出荷に適した、より高速で最適化された実行可能ファイルが構築されます。 既定のビルド構成は Debug です。
プロジェクトをビルドする最も簡単な方法は F7 キーを押す方法ですが、メイン メニューから [Build>] を選択してビルドを開始することもできます。
ビルド プロセスは、Visual Studio UI (ユーザー インターフェイス) の下部にある [出力 ] ウィンドウで確認できます。 エラー、警告、ビルド操作がここに表示されます。 エラーがある場合 (または、構成されたレベルを超えて警告がある場合)、ビルドは失敗します。 エラーと警告を選択して、発生した行に移動できます。 F7 キーをもう一度押すか (エラーのあるファイルのみを再コンパイルする場合)、または Ctrl+Alt+F7 キーを押してプロジェクトをリビルドします (クリーンで完全なリビルドの場合)。
エディターの下の結果ウィンドウには、未加工のコンパイラ出力 (エラー メッセージを含む) を含む [ 出力 ] ウィンドウという 2 つのタブ付きウィンドウがあります。および [エラー一覧] ウィンドウ。すべてのエラーと警告の並べ替え可能でフィルター可能な一覧が表示されます。
ビルドが成功すると、[ 出力] ウィンドウに次のような結果が表示されます。
エラー一覧を確認する
以前に正常にコンパイルしたコードに変更を加えない限り、エラーが発生する可能性があります。 コーディングを始めたばかりの場合は、きっと多くの疑問を持っているでしょう。 単純な構文エラーや変数名が正しくないなど、エラーが明らかになることがあります。また、理解が難しい場合もあります。ただし、ガイドとなるのは難しいコードだけです。 問題をよりわかりやすく表示するには、ビルド 出力 ウィンドウの下部に移動し、[ エラー一覧 ] タブを選択します。このアクションにより、プロジェクトのエラーと警告をより整理したビューに移動し、追加のオプションも提供します。
[エラー 一覧 ] ウィンドウでエラー行を選択して、エラーが発生した行にジャンプします。 (または、Ctrl キーを押して行番号をオンにします+Q: 行番号を入力し、結果から [行番号のオンとオフを切り替える] を選択します。このアクションは、行番号を有効にできる [オプション] ダイアログに最も簡単にアクセスする方法です)。
Ctrl+キーを押すと、エラーが発生した行番号にすばやくジャンプできます。
Visual Studio では、このエラーが赤い「波線アンダーライン」で示されます。 その上にマウス ポインターを合わせると、詳細が表示されます。 修正を行うと、修正で新しいエラーが発生する可能性がありますが、消えてしまいます。 (このアクションは "回帰" と呼ばれます)。
エラー一覧を確認し、コード内のすべてのエラーに対処します。
エラーの詳細を確認する
多くのエラーは、コンパイラの観点から言うと意味をなさない可能性があります。 このような場合は、追加情報が必要になる場合があります。 [エラー一覧] ウィンドウでは、エラーまたは警告に関する詳細情報の自動Bing検索を実行できます。 対応するエントリ行を右クリックし、コンテキスト メニューから [エラー ヘルプの表示] を選択するか、[エラー一覧] の [コード] 列でハイパーリンクされたエラー コードの値を選択します。
設定に応じて、Web ブラウザーにエラー コードとテキストの検索結果が表示されるか、Visual Studio 内でタブが開き、Bing検索の結果が表示されます。 結果は、インターネット上の多くの異なるソースからのものであり、役に立つものがすべて見つからない場合があります。
コード分析を使用する
コード アナライザーは、実行時エラーやコード管理の問題につながる可能性がある一般的なコードの問題を探します。
C# と Visual Basic のコード分析
Visual Studio には、入力時に C# コードと Visual Basic コードを調べる .NET コンパイラ プラットフォーム アナライザー の組み込みセットが含まれています。 Visual Studio 拡張機能として、または NuGet パッケージとして、より多くのアナライザーをインストールできます。 ルール違反が見つかった場合は、エラー一覧とコード エディターの両方で、問題のあるコードの下の波線として報告されます。
C++ コードの分析
C++ コードを分析するには、 静的コード分析を実行します。 ビルドを成功させるための明らかなエラーを修正したら、それを実行する習慣を身につけてください。また、その過程で生成される可能性のある警告にも時間をかけて対応しましょう。 面倒を避けることができる上に、コードのスタイルに関するテクニックをいくつか学ぶことができるかもしれません。
Alt+F11 キーを押します (または、[分析>ソリューションでコード分析を実行する] を選択して、静的コード分析を開始します。
新しい警告または更新された警告は、IDE の下部にある [エラー一覧 ] タブに表示されます。 警告を選択して、コード内でその位置にジャンプします。
クイック アクションを使用してコードを修正またはリファクタリングする
電球アイコンまたはドライバー アイコンから使用できるクイック アクションを使用すると、コードをインラインでリファクタリングできます。 C#、C++、Visual Basic のコードで一般的な警告をすばやく効果的に修正する簡単な方法です。 それらにアクセスするには、警告波線を右クリックし、[クイック アクションとリファクタリング] を選択します。 または、色付きの波線が表示された行にカーソルがある場合は、Ctrl++キーを押すか、余白にある電球、エラー電球、またはドライバーのアイコンを選択します。 その後、Visual Studio には、そのコード行に適用できる修正またはリファクタリングの一覧が表示されます。
クイック アクションは、コード アナライザーがコードを修正、リファクタリング、または改善する機会があると判断した場合に使用できます。 任意のコード行を選択し、右クリックしてコンテキスト メニューを開き、[ クイック アクションとリファクタリング] を選択します。 リファクタリングまたは改善のオプションを使用できる場合は、表示されます。 それ以外の場合は、IDE の左下隅に [ クイック アクションがありません ] というメッセージが表示されます。
経験があれば、方向キーと をすばやく使用できます。リファクタリングの機会を+し、コードをクリーンアップできます。
コードのクリーンアップを実行する
Visual Studio では、エディターの下部にある [コードクリーンアップ] ボタンを使用して、コード スタイルの基本設定を含む、C# コード ファイルのオンデマンド形式を提供します。
ファイルをスペースやインデントなどの書式設定に加えて、 コード クリーンアップ では、定義した一連のコード スタイル規則も適用されます。 各コード スタイルの設定は、プロジェクト用の EditorConfig ファイルから、または [オプション] ダイアログ ボックスの コード スタイル設定 から読み取られます。
実行中のコードをデバッグする
これでコードが正常にビルドされ、少しクリーンアップが実行されたので、 F5 キーを押すか、 デバッグ>デバッグの開始を選択して実行します。 このアクションにより、アプリがデバッグ環境で開始されるため、その動作を詳細に確認できます。 アプリの実行中に Visual Studio IDE が変更されます。 [出力 ] ウィンドウは 2 つの新しいウィンドウに置き換えられます (既定のウィンドウ構成)。 [自動変数]、[ローカル]、[ウォッチ ] タブ付きウィンドウ、[ 呼び出し履歴]、[ブレークポイント]、[例外設定]、[出力 ] タブ付きウィンドウです。 これらのウィンドウには複数のタブがあり、アプリの変数、スレッド、呼び出し履歴、その他の動作を実行時に検査および評価できます。
Shift+F5 キーを押すか、[停止] ボタンをクリックして、アプリを停止します。 または、アプリのメイン ウィンドウ (またはコマンド ライン ダイアログ) を閉じるだけです。
コードが予想どおりに完全に実行された場合は、おめでとうございます。 ただし、コードの応答が停止したり、クラッシュしたり、奇妙な結果が生じたりすることがあります。 その場合は、これらの問題の原因を見つけてバグを修正する必要があります。
単純なブレークポイントを設定する
ブレークポイント は、信頼性の高いデバッグの最も基本的で不可欠な機能です。 ブレークポイントは、変数の値やメモリの動作、またはコードの分岐が実行されているかどうかを確認できるように、Visual Studio で実行中のコードを中断する場所を示します。 ブレークポイントの設定と削除後にプロジェクトをリビルドする必要はありません。
ブレークポイントを設定するには、中断を発生させる行の右端をクリックするか、 F9 キーを押して現在のコード行にブレークポイントを設定します。 コードを実行すると、このコード行の指示が実行される前に一時停止 (または 中断) します。
ブレークポイントの一般的な用途は次のとおりです。
クラッシュまたは応答しないプログラムのソースを絞り込むには、失敗の原因と思われるメソッド呼び出しのコード全体と周囲にブレークポイントを分散します。 デバッガーでコードを実行するときに、問題のあるコード行が見つかるまでブレークポイントを削除してからリセットします。 デバッガーでコードを実行する方法については、次のセクションを参照してください。
新しいコードを導入する場合は、その先頭にブレークポイントを設定し、コードを実行して期待どおりに動作していることを確認します。
複雑な動作を実装した場合は、プログラムが中断したときに変数とデータの値を調べることができるように、アルゴリズム コードのブレークポイントを設定します。
C または C++ コードを記述している場合は、ブレークポイントを使用してコードを停止し、メモリ関連のエラーをデバッグするときにアドレス値 (NULL を探す) と参照カウントを調べることができます。
ブレークポイントの使用の詳細については、「 Visual Studio デバッガーでのブレークポイントの使用」を参照してください。
実行時にコードを検査する
実行中のコードがブレークポイントにヒットして一時停止すると、黄色でマークされたコード行 (現在のステートメント) はまだ実行されていません。 この時点で、現在のステートメントを実行し、変更された値を調べることができます。 いくつかの ステップ コマンドを使用して、デバッガーでコードを実行できます。 マークされたコードがメソッド呼び出しの場合は、 F11 キーを押してステップ インできます。 F10 キーを押してコード行をステップ オーバーすることもできます。 コマンドの詳細とコードのステップ 実行方法の詳細については、「 デバッガーを使用したコード間の移動」を参照してください。
前の図では、 F10 または F11 キーを押してデバッガー 1 つのステートメントを進めることができます (ここではメソッド呼び出しがないため、両方のコマンドの結果は同じです)。
デバッガーが一時停止している間、変数と呼び出し履歴を調べて、何が起こっているかを判断できます。 期待する範囲内に値はありますか? 呼び出しは正しい順序で行われていますか?
変数にカーソルを合わせると、現在の値と参照が表示されます。 予期していなかった値が表示された場合は、前のコードまたは呼び出し元のコードにバグがある可能性があります。 詳細については、「最初に Visual Studio デバッガーを見る」を参照してください。
さらに、Visual Studio に [診断ツール] ウィンドウが表示されます。このウィンドウでは、時間の経過に伴うアプリの CPU とメモリの使用状況を確認できます。 アプリ開発の後半で、これらのツールを使用して、予期しない CPU 使用率やメモリ割り当てを探すことができます。 これをウォッチ ウィンドウとブレークポイントと共に使用して、予期しない大量の使用や未リリースのリソースの原因を特定します。 詳細については、「 プロファイリング ツール (C#、Visual Basic、C++、F#)」を参照してください。
単体テストの実行
単体テストは、コードバグに対する防御の最初の行です。正しく行われると、コードの 1 つの "ユニット" (通常は 1 つの関数) がテストされ、完全なプログラムよりもデバッグが簡単になるためです。 Visual Studio では、マネージド コードとネイティブ コードの両方の Microsoft 単体テスト フレームワークがインストールされます。 単体テスト フレームワークを使用して単体テストを作成し、それらを実行し、これらのテストの結果を報告します。 変更を加えたときに単体テストを再実行して、コードが正常に動作していることをテストします。 Visual Studio Enterprise エディションでは、ビルドのたびにテストを自動的に実行できます。
開始するには、「 IntelliTest を使用してファジー テスト用の単体テストを生成する」を参照してください。
Visual Studio での単体テストの詳細と、より高品質なコードの作成に役立つ方法については、 単体テストの基本を参照してください。