構文チェッカー

SSPにゴーストを読み込ませなくても、手元でスクリプトの誤りを確かめられるツールがあります。 構文エラーと静的解析の結果(未定義の call、ループの外の break など)を一覧で表示します。

チェックするだけなので、save.json を読み書きしたり、SAORIを読み込んだりはしません。

ツールは2種類あります。

ツール向いている人
minato_check_gui.exe(GUI版)ダブルクリックで使いたい人
minato_check.exe(CLI版)コマンドラインやスクリプトから使いたい人

どちらも同じチェックを行います。

GUI版(minato_check_gui)

  1. minato_check_gui.exe をダブルクリックして起動します。
  2. ゴーストのフォルダか、talks フォルダの中の .mnt ファイルを窓にドラッグ&ドロップします。 ドロップできないときは「フォルダを選ぶ」「ファイルを選ぶ」ボタンから選んでください。
  3. エラー・警告・お知らせが色分けされて一覧で表示されます。

exeのアイコンにフォルダをドロップして起動することもできます。 前回選んだフォルダは記憶され、次に選択画面を開くとそこから始まります。

渡すフォルダは、ゴーストのフォルダ(ghost/master を含むフォルダ)でも、ghost/master そのものでもかまいません。 talks/main.mnt がある場所を自動で探します。

CLI版(minato_check)

talks/main.mnt を含むフォルダ(ゴーストの ghost/master)を指定して実行します。

minato_check.exe "C:\ghost\mighost\ghost\master"

GUI版と違い、CLI版には ghost/master そのものを渡してください。

オプション意味
--no-color色付き表示をやめる(ログに保存するときなど)
-h / --help使い方を表示する

診断は1件につき次のような形で表示されます。

[error] main.mntの4行目(OnBoot内): メッセージ ヒント: …

問題がなければ「構文・静的解析ともに問題ありませんでした」と表示されます。 診断は標準エラー出力に、問題なしのメッセージだけが標準出力に出ます。

終了コード

終了コード意味
0問題なし、または warning / notice だけ
1構文エラーか、errorレベルの静的解析結果がある

コミット前のチェックやCIに組み込むときは、この終了コードで判定してください。

ドラッグ&ドロップで使う

minato_check.exe と tools\minato_check.bat を同じフォルダに置くと、 minato_check.bat に ghost/master フォルダをドラッグ&ドロップするだけでチェックできます。 結果を読めるように、終わったあと窓は閉じずに止まります。

自分でビルドする

Rustの環境があれば、ソースからビルドできます。

cargo build --release --features cli --bin minato_check

--features cli はチェッカー専用の依存を有効にするためのもので、本体DLLのビルドには必要ありません。

表示されるレベル

レベル意味
errorこのままでは読み込めない。直す必要がある
warning動くが、意図どおりでない可能性が高い
notice動作には影響しない。念のための知らせ

それぞれのエラーの読み方はパースエラーの読み方を、よくある原因はよくあるミスを見てください。