Visual Basic での警告の構成
Visual Basic コンパイラには、ランタイム エラーが発生する可能性のあるコードについての一連の警告が用意されています。その情報を使用して、より高速でバグの少ない、すっきりとした優れたコードを作成できます。たとえばユーザーが、未代入のオブジェクト変数のメンバーを呼び出そうとしたり、戻り値を設定せずに関数から制御を戻そうとしたり、例外をキャッチするロジックにエラーがある Try ブロックを実行しようとしたりすると、コンパイラは警告を生成します。
発生が予想されるエラーの心配をすることなく、目的のタスクにユーザーが専念できるように、コンパイラがユーザーの代わりに追加的なロジックを提供することもあります。以前のバージョンの Visual Basic では、Option Strict を使用して、Visual Basic のコンパイラが提供する追加的なロジックを制限していました。警告の構成を使用すると、個々の警告のレベルで、このロジックをよりきめ細かく制御できます。
場合によっては、プロジェクトをカスタマイズして、アプリケーションに無関係な一部の警告をオフにしたり、その他の警告をエラーとして扱うことができます。このページでは、個々の警告をオンおよびオフにする方法を説明します。
警告をオフおよびオンにする
警告を構成する方法は 2 つあります。プロジェクト デザイナーを使用する方法と、/warnaserror および /nowarn の各コンパイラ オプションを使用する方法です。
[プロジェクト デザイナー] ページの [コンパイル] タブを使用すると、警告をオンおよびオフにできます。すべての警告を無効にするには、[すべての警告を表示しない] チェック ボックスをオンにします。すべての警告をエラーとして扱うには、[すべての警告をエラーとして扱う] をオンにします。表示されている表を使用すると、一部の警告をエラーまたは警告として個別に切り替えることができます。
Option Strict を Off に設定した場合、Option Strict に関連する警告をそれぞれ個別に扱うことはできません。Option Strict を On に設定した場合、関連する警告は、そのステータスにかかわらず、エラーとして扱われます。コマンド ライン コンパイラで /optionstrict:custom と指定することによって Option Strict を Custom に設定した場合、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 (演算子)
モジュールでのオーバーロード修飾子の使用の警告
Overloads を Module で使用している場合に生成されます。新しいプロジェクトの既定値はオンです。
ID: 42028
Catch ブロックの重複またはオーバーラップの警告
他に定義されている Catch ブロックとの関係で、到達することのない Catch ブロックがある場合に生成されます。新しいプロジェクトの既定値はオンです。
ID: 42029、42031
参照
関連項目
Try...Catch...Finally ステートメント (Visual Basic)
[コンパイル] ページ (プロジェクト デザイナー) (Visual Basic)