Skip to content

Instantly share code, notes, and snippets.

@Tatakinov
Last active July 4, 2022 13:52
Show Gist options
  • Save Tatakinov/acc4120d9ab603715c0a22eeac7386f4 to your computer and use it in GitHub Desktop.
Save Tatakinov/acc4120d9ab603715c0a22eeac7386f4 to your computer and use it in GitHub Desktop.
2021AdventCalendar 12/13

YAYAのlintを作りたかった

伺かAdventCalendar2021の13日の記事です。

lintとはなんぞや

デバッガーが動的なデバッグツールならこちらは静的なもの。

実行するまでもなく怪しい部分を見つけ出してくれます。便利。

出来上がったもの

構文解析は結構うまくいくようになりました。 でもバグはある。

名前

yayalint(ややりんと)。里々の方がまんまでつけたのでそちらに倣って。

機能

構文エラー、未定義の変数の使用、未使用の変数の存在などを見つけられます。 他の機能は気が向いたらちまちま作っていきます。

使い方

Usage: yayalint.exe [-f] [-s] [-u] [-d] [-l] [-g] [-h] <path>

Arguments:
   path                  yaya.dllが置いてあるフォルダのパス

Options:
   -f, --nofile          ファイルが見つからないことを出力しない
   -s, --nosyntaxerror   構文エラーに関する情報を出力しない
   -u, --nounused        未使用の変数に関する情報を出力しない
   -d, --noundefined     未定義の変数に関する情報を出力しない
   -l, --nolocal         ローカル変数に関する情報を出力しない
   -g, --noglobal        グローバル変数/関数に関する情報を出力しない
   -h, --help            ヘルプの表示

各オプションについて出力する、ではなく出力しない、であることに留意されたし。

読み込む辞書の文字コードはUTF-8とShift_JISのみ対応しています。

出力はUTF-8なので、非ASCII文字を変数/関数/ファイル名に使う場合は注意。 コマンドプロンプトで実行すると多分文字化けします。

なので、文字化けしないようにするbatファイルを用意したのでそちらを使ってください。 batファイルにyaya.dllのあるフォルダ(一般的にはmasterフォルダ)をD&Dするだけ!便利!

batファイルにyaya.txt(or aya.txt)をD&Dするだけ!

使用例

//yaya_example.txt

Example
{
  _string = "Hello,"
  _result = _striing + "World!"
  _result
}

こんな辞書があったとします。

なんということでしょう、Example関数の2行目で_stringをうっかり_striingと書いてしまいました。 これに対してyayalintを使うと…

read undefined variable:	_striing	at	yaya_example.txt	Example
unused variable:	_string	at	yaya_example.txt	Example

のように警告してくれます。

yayalintとの付き合い方

例によって手元にある紺野ややめに使うと…と思いましたがメッセージが長くなったので-gオプションをつけて実行したものをペタリ。

unused variable:	_result	at	system/yaya_shiori3.dic	OnRequest
read undefined variable:	_value	at	system/yaya_shiori3.dic	SHIORI3FW.AssembleReferenceHeader
unused variable:	_trash	at	system/yaya_shiori3.dic	SHIORI3FW.RaiseIDEvent
unused variable:	_dmy	at	system/yaya_shiori3.dic	SHIORI3FW.ExecuteDl2ToDll

-gをつけないとグローバル変数や関数に関するものがズラーっと出力される訳ですが、特に関数、OnFirstBootに代表する様にベースウェアから呼ばれるイベントが unusedだよ、という警告が沢山でるので実際に使うときは-gオプションを付けて使うことが多くなりそうです。

動かないことがあるのはundefinedな変数や関数があるときなので、-uオプションを使う方のが実用的です。

終わりに

例のごとくこのプログラムは自己責任で使ってください

使ってみようかな…?と思われる方は こちらからダウンロードをお願いします。

@steve02081504
Copy link

thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment