Skip to main content
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() はこれに該当します。