次の方法で共有


Visual Basic での警告の構成

Visual Basic コンパイラには、実行時エラーの原因となる可能性があるコードに関する一連の警告が含まれています。 その情報を使用して、バグを減らしながら、よりクリーンで高速で優れたコードを記述できます。 たとえば、ユーザーが割り当てられていないオブジェクト変数のメンバーの呼び出し、戻り値を設定せずに関数から戻る、またはロジック内のエラーを含む Try ブロックを実行して例外をキャッチしようとすると、コンパイラによって警告が生成されます。

コンパイラがユーザーの代わりに追加のロジックを提供して、ユーザーがエラーの可能性を予測するのではなく、手元のタスクに集中できる場合があります。 以前のバージョンの Visual Basic では、Option Strict を使用して、Visual Basic コンパイラが提供する追加のロジックを制限していました。 警告を構成すると、個々の警告のレベルで、このロジックをより細かく制限できます。

他の警告をエラーに変えながら、プロジェクトをカスタマイズし、アプリケーションに関連しないいくつかの警告をオフにすることができます。 このページでは、個々の警告のオンとオフを切り替える方法について説明します。

警告のオフとオンを切り替える

警告を構成するには、いくつかの異なる方法があります。プロジェクト デザイナーを使用して警告を構成したり、/warnaserror を使用したり、/nowarn コンパイラ オプションを したり、プロジェクト ファイル (vbproj ファイル) を編集したり、NoWarn MSBuild プロパティを使用したりできます。 MSBuild プロパティを使用するには、「Visual Basic プロジェクト全体の特定の警告を抑制する」を参照してください。

プロジェクト デザイナーの エクスペリエンスは、.NET Framework プロジェクトと .NET Core (または .NET 5 以降) プロジェクトのどちらを使用しているかによって異なります。

.NET Core (または .NET 5 以降) プロジェクトでは、プロジェクト デザイナー の [コンパイル] セクションには、警告の重大度 という設定が含まれています。この設定を使用すると、すべての警告を無効にしたり、すべての警告をエラーに昇格させたり、警告の各カテゴリを個別に制御したりできます (既定)。 警告カテゴリの設定は、プロジェクト デザイナーの同じ領域に表示されます。

.NET Framework プロジェクトで、プロジェクト デザイナーの [コンパイル] タブで、[すべての警告 を無効にする] チェック ボックスをオンにして、すべての警告を無効にします。すべての警告をエラーとして扱う を選択して、すべての警告をエラーとして扱います。 一部の個別の警告は、表示されるテーブルで必要に応じてエラーまたは警告として切り替えることができます。

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

Option StrictOffに設定されている場合、Option Strict 関連の警告は互いに独立して処理できません。 Option StrictOnに設定されている場合、関連する警告は、状態に関係なくエラーとして扱われます。 コマンド ライン コンパイラで /optionstrict:custom を指定することによって Option Strictカスタムに設定されていると、Option Strict の警告のオン/オフを独立して切り替えることができます。

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

コマンド ライン オプション 指定内容
/warnaserror+ または /warnaserror すべての警告をエラーとして扱う
/warnsaserror- 警告はエラーとして扱わないでください。 この設定が既定です。
/warnaserror+:<warning list> 特定の警告をエラーとして扱います。エラー ID 番号はコンマ区切りのリスト r で示されます。
/warnaserror-:<warning list> 特定の警告をエラーとして扱わないでください。エラー ID 番号でコンマ区切りの一覧に表示されます。
/nowarn 警告を報告しないでください。
/nowarn:<warning list> 警告を報告しないように指定してください。その警告はエラー ID 番号でコンマ区切りのリストで示されます。

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

例示

このコマンド ライン引数の例の表では、各引数の動作について説明します。

引数 説明
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 でエラーを作成する Object 型のオペランドが発生したときに生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42018 および 42019

'As' 句が必要な宣言の警告

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

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

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

変数が値を割り当てられる前に使用されたときに生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42104、42030

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

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

ID: 42024

インスタンス変数を通じた共有メンバーアクセスの警告

インスタンスを介して共有メンバーにアクセスすることで副作用が発生する場合、あるいはインスタンス変数を介して共有メンバーにアクセスする際に、それが式の右辺でない場合やパラメーターとして渡されるときに生成されることがあります。 新しいプロジェクトの既定値はオンです。

ID: 42025

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

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

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

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

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

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

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

ModuleOverloads が使用されたときに生成されます。 新しいプロジェクトの既定値はオンです。

ID: 42028

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

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

ID: 42029、42031