タイポや「グローバル」宣言の欠落など、エラーを示す可能性のある特定の条件に対する警告の有効・無効を設定します。
#Warn WarningType, WarningMode
型:文字列
省略した場合は、Allがデフォルトとなります。Otherwise, specify the type of warning to enable or disable.
VarUnset:スクリプトの実行を開始する前に、次のいずれにも使用されることのない各変数の最初の参照に対して警告を表示します:
LocalSameAsGlobal:スクリプトの実行前に、グローバル変数と同じ名前の未宣言のローカル変数に対して警告を表示するようにします。これは、グローバル変数を関数内で宣言してから代入しようとした場合に起こるエラーを防止するためのものです。もし本当にローカルな変数であることを意図していたのであれば、local x
やstatic y
などの宣言を用いて警告を抑制することができます。
この警告は、デフォルトでは無効になっています。
#Warn g := 1 ShowG() { ; 関数が一度も呼び出されない場合でも警告は表示されます。 ; global g ; <-- グローバル変数に代入するために必要です。 g := 2 } ShowG MsgBox g ; 宣言がない場合、上記はローカルな "g"に割り当てられる。
Unreachable:スクリプトの実行を開始する前に、同じネスティングレベルのReturn
、Break
、Continue
、Throw
、Goto
の直後の各行について、その行がラベルの対象でない限り、警告を表示するようにします。そんなセリフがあっても実行されることはない。
コードが到達できないことを意図している場合(例えば、return
によってコードのブロックを一時的に無効にした場合、またはホットキーやホットストリングをコメントアウトすることによって一時的に無効にした場合)、到達できないコードもコメントアウトすることを検討してください。また、最初の到達不可能な行の上にラベルを定義することで、警告を抑制することも可能です。
All:サポートされているすべての警告タイプに、与えられたWarningModeを適用します。
型:文字列
省略された場合は、MsgBoxがデフォルトとなる。Otherwise, specify a value indicating how warnings should be delivered.
MsgBox:警告の内容を説明するメッセージボックスを表示します。なお、メッセージボックスが解除されると、スクリプトは通常通り実行されます。
StdOut:警告の説明をファイル名と行番号とともに標準出力(プログラムの標準出力ストリーム)に送信します。これにより、SciTEのような高級エディタがスクリプトを中断することなく警告を捕らえることができ、ユーザーは後でエディタの出力ペインから問題のある行にジャンプすることができます。
OutputDebug:警告の説明をデバッガに送信して表示させる。デバッガがアクティブでない場合は、何の効果もありません。詳しくは、OutputDebugをご覧ください。
Off:与えられたWarningTypeの警告を無効化します。
If this directive is unspecified in the script, all warnings are enabled and use the MsgBox mode, except for LocalSameAsGlobal, which is disabled.
VarUnset、LocalSameAsGlobal、Unreachableの警告を出すチェックは、すべてのディレクティブがパースされた後、スクリプトが実行される前に行われます。したがって、スクリプト内の位置は重要ではありません(また、他のディレクティブと同様、#Warnは条件付きで実行することはできません)。
ただし、複数の#Warnディレクティブの並び順は重要です。ある予告を設定した最後の発生で、その予告のモードが決定されます。したがって、例えば、以下の2つのステートメントは、LocalSameAsGlobal以外のすべての警告を有効にする効果を合わせ持っています:
#Warn All #Warn LocalSameAsGlobal, Off