Visual Studio 2017 を使用することをお勧めします

Visual Basic での警告の構成

 

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

Visual Basic コンパイラには、ランタイム エラーが発生する可能性のあるコードについての一連の警告が用意されています。 その情報を使用して、より高速でバグの少ない、すっきりとした優れたコードを作成できます。 たとえばユーザーが、未代入のオブジェクト変数のメンバーを呼び出そうとしたり、戻り値を設定せずに関数から制御を戻そうとしたり、例外をキャッチするロジックにエラーがある Try ブロックを実行しようとしたりすると、コンパイラは警告を生成します。

発生が予想されるエラーの心配をすることなく、目的のタスクにユーザーが専念できるように、コンパイラがユーザーの代わりに追加的なロジックを提供することもあります。 以前のバージョンの Visual Basic では、Option Strict を使用して、Visual Basic のコンパイラが提供する追加的なロジックを制限していました。 警告の構成を使用すると、個々の警告のレベルで、このロジックをよりきめ細かく制御できます。

場合によっては、プロジェクトをカスタマイズして、アプリケーションに無関係な一部の警告をオフにしたり、その他の警告をエラーとして扱うことができます。 このページでは、個々の警告をオンおよびオフにする方法を説明します。

警告を構成する方法は 2 つあります。プロジェクト デザイナーを使用する方法と、/warnaserror および /nowarn の各コンパイラ オプションを使用する方法です。

[プロジェクト デザイナー] ページの [コンパイル] タブを使用すると、警告をオンおよびオフにできます。 すべての警告を無効にするには、[すべての警告を表示しない] チェック ボックスをオンにします。すべての警告をエラーとして扱うには、[すべての警告をエラーとして扱う] をオンにします。 表示されている表を使用すると、一部の警告をエラーまたは警告として個別に切り替えることができます。

Option StrictOff に設定した場合、Option Strict に関連する警告をそれぞれ個別に扱うことはできません。 Option StrictOn に設定した場合、関連する警告は、そのステータスにかかわらず、エラーとして扱われます。 コマンド ライン コンパイラで /optionstrict:custom と指定することによって Option StrictCustom に設定した場合、Option Strict の警告のオンとオフは個別に切り替えることができます。

また、コンパイラの /warnaserror コマンド ライン オプションを使用して、警告をエラーとして扱うかどうかを指定することもできます。 このオプションにコンマ区切りのリストを指定し、+ または - を指定すると、警告をエラーと警告のどちらとして扱うかを指定できます。 使用可能なオプションの詳細を次の表に示します。

コマンド ライン オプション対応
/warnaserror+[すべての警告をエラーとして扱う]
/warnsaserror-警告をエラーとして扱いません。 これは、既定の設定です。
/warnaserror+:<warning list >特定の警告をエラーとして扱います。その対象は、コンマ区切りのリストでエラー ID 番号で指定します。
/warnaserror-:<warning list>特定の警告をエラーとして扱いません。その対象は、コンマ区切りのリストでエラー ID 番号で指定します。
/nowarn警告を報告しません。
/nowarn:<warning list>特定の警告を報告しません。その対象は、コンマ区切りのリストでエラー ID 番号で指定します。

警告リストには、エラーとして扱う警告のエラー ID 番号を指定します。これをコマンド ライン オプションで使用して、特定の警告をオンまたはオフにできます。 警告リストに無効な番号が含まれている場合、エラーが報告されます。

この表は、コマンド ライン引数の例と、各引数の動作の説明です。

引数Description
vbc /warnaserrorすべての警告をエラーとして扱うよう指定しています。
vbc /warnaserror:42024警告 42024 をエラーとして扱うよう指定しています。
vbc /warnaserror:42024,42025警告 42024 および 42025 をエラーとして扱うよう指定しています。
vbc /nowarn警告を一切報告しないよう指定しています。
vbc /nowarn:42024警告 42024 を報告しないよう指定しています。
vbc /nowarn:42024,42025警告 42024 および 42025 を報告しないよう指定しています。

次に示すのは、エラーとして扱うのに適している警告の一覧です。

暗黙の型変換の警告

暗黙の型変換のインスタンスに対して生成されます。 & 演算子を使用しているときの、組み込みの数値型から文字列への暗黙の型変換は含まれません。 新しいプロジェクトの既定値はオフです。

ID: 42016

遅延バインディングによるメソッド呼び出しとオーバーロードの解決の警告

遅延バインディングのインスタンスに対して生成されます。 新しいプロジェクトの既定値はオフです。

ID: 42017

型オブジェクトのオペランドの警告

Object 型のオペランドがあり、それによって Option Strict On でエラーが発生する場合に生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42018 および 42019

宣言に 'As' 句が必要との警告

変数、関数、またはプロパティの宣言に As 句がなく、それによって Option Strict On でエラーが発生する場合に生成されます。 型が割り当てられていない変数は Object 型と見なされます。 新しいプロジェクトの既定値はオンです。

ID: 42020 (変数宣言)、42021 (関数宣言)、および 42022 (プロパティ宣言)

Null 参照の例外の可能性の警告

値を代入する前に変数を使用している場合に生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42104、42030

未使用のローカル変数の警告

宣言したローカル変数を 1 度も参照していない場合に生成されます。 既定値はオンです。

ID: 42024

インスタンス変数から共有メンバーへのアクセスの警告

インスタンスから共有メンバーへアクセスすることで副作用が生じる可能性がある場合、または、インスタンス変数から共有メンバーへのアクセスが式の右側にないか、またはそれをパラメーターとして渡している場合に生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42025

演算子またはプロパティへの再帰的アクセスの警告

演算子またはプロパティを定義するルーチンの本体で、その演算子またはプロパティ自身を使用している場合に生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42004 (演算子)、42026 (プロパティ)

戻り値のない関数または演算子の警告

関数または演算子で戻り値を指定していない場合に生成されます。 これには、関数と同じ名前を持つ暗黙のローカル変数への Set の省略も含まれます。 新しいプロジェクトの既定値はオンです。

ID: 42105 (関数)、42016 (演算子)

モジュールでのオーバーロード修飾子の使用の警告

OverloadsModule で使用している場合に生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42028

Catch ブロックの重複またはオーバーラップの警告

他に定義されている Catch ブロックとの関係で、到達することのない Catch ブロックがある場合に生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42029、42031

例外処理アシスタント ダイアログ ボックス
Error Types
Try...Catch...Finally Statement
/nowarn
/warnaserror
[コンパイル] ページ、プロジェクト デザイナー (Visual Basic)
既定で無効になっているコンパイラ警告

表示: