compile()/compileProject()/analyze()、および CLI の --json/--format json 出力は、共通の Diagnostic スキーマで問題を報告します。
code は安定な kebab-case 識別子です。廃止されることはあっても、意味の変更や再利用はされません。message は常に英語固定で、UI 側でメッセージをローカライズする場合は code をキーにしてください。
エラーメッセージの読み方
syntax-errorのメッセージは、パーサ/レキサーがそのまま返す文字列です。例:expected expression at 1:11, got )。行:列の位置と、期待していたトークン/実際のトークンが含まれます。sw-unavailable-globalのメッセージは"<name>" is a standard Lua builtin but is not available in the Stormworks sandbox.の形式です。input-outside-ontick/output-outside-ontickのメッセージはそれぞれ"input.*" can only be referenced inside onTick()./"output.*" can only be referenced inside onTick().です。invalid-module-keyのメッセージは発生元で異なります。modulesのキー自体が命名規則違反のときはmodule key "<key>" does not match the module key grammar.、ambient 名前空間と衝突するときはmodule key "<key>" is reserved by the ambient namespace "<name>".です。CLI の--modules-dir走査で発生した場合は、キーへ変換できないパスなら"<path>" does not translate to a valid module key (...)、2 つのパスが同じキーへ解決されたならmodule key "<key>" is produced by both "<path>" and "<path>" (path collision).になります。
診断コード一覧
プロジェクト構造(常に error)
require の制約(常に error)
ambient 名前空間の制約(常に error)
環境と安全な短縮経路(SDK統合版)
公開済みの旧版には異なる警告動作があります。以下は環境契約を統一したSDK統合版に対応します。
旧版の
env-accessやunsupported-api-call警告は、意味の壊れた生成物を成功扱いする根拠にはしません。統合版では適用可能な経路を選ぶか、生成前にエラーを返します。
lint(analyze 実行時、warning)
Stormworks サンドボックス固有の制限(severity は呼び出し方に依存)
抑制ディレクティブ(常に error)
診断の抑制
抑制の手段は 2 つあり、どちらもanalyze()(ライブラリ)と stormmin lint(CLI)でのみ機能します。compileProject()/compile() の診断には適用されません。また、どちらも severity: error の診断は抑制できません。
disabledRules オプション
analyze()/lint の disabledRules に診断コードの配列を渡すと、プロジェクト全体でその severity: warning の診断が抑制されます。
--@storm ignore(...) 行コメント
ソース中の行コメントで、1 行単位に個別の診断を抑制できます。
- 構文は
--@storm ignore(<診断コード>)です。<診断コード>は英数字と-のみで構成される必要があり、空にはできません。 - 抑制されるのは同じ行に付いた同じコードの診断だけです。前の行や次の行には効きません。抑制対象を持たない診断(位置情報のない診断など)にも効きません。
- 対象コードは 1 コメントにつき 1 つです。複数を抑制するには、同じ行に
--@storm ignore(...)を並べて書きます。 - 有効なのは
--形式の行コメントのみで、--[[ ]]のロングコメント内に書いても認識されません。 --@stormで始まるコメントのうち、この形式に合わないものはサイレントに無視されずunknown-storm-directive(severity: error)として報告されます。メッセージはunrecognized "--@storm" directive: "<コメント全文>".です。--@storm bogusや--@storm ignore()はこれに該当します。