ばぐとらぶごる

開発者もすなるぶろぐといふものを、エンバグ野郎もしてみむとてするなり。

伺か Advent Calender 2021/12/14 : 早速YAYAlintを使ってみた話

こんにちは。ご覧のチャンネルはSSP BUGTRAQ公式ブログで間t…もういいかこれは。

ナイトメア・オブ・エンバグことぽなです。

やや便利なYAYAlint

12/13の記事「YAYAのlintを作りたかった」を先にご覧ください。里々のlint作ったんだからYAYAもあるといいなーという電波が届いたのか否かは定かではありませんが、タタキノフ氏が5晩でやってくれました。これはもうジェバンニ認定待ったなしです。

というわけで、YAYAのスクリプト性的静的解析ツールになります。表示されるログは相当口うるさいですがlintとはこういうもんです。人類が書いたスクリプトのほうがアホだからね、仕方ないね。

歴戦の猛者、完全敗北

さて当方ものすごい長い間のAYA/YAYAユーザーです。実はきわめて初期には華和梨(のブランチの梨野)ユーザーだったのですが、普段C言語チックな言語ばかりを扱っている都合で、AYAに乗り換えて以来離れられなくなりました。

たぶん伺かの歴史の半分ぐらいはAYAのスクリプト書きまくってる気がしますし、今はAYA/YAYAがSHIORI/3.0プロトコルを扱うためのシステム辞書のメンテナンスまでやってますから、正直なところlintにかけたところでまあそんな致命的な問題はないだろうなーとたかをくくっておりました。

見事にたかをくくれませんでした。

うわーシステム辞書からやばげなエラーが出るよ!!

助けてバグえもん!!

ネタはわれてんだ、さっさとゲロっちまえよ

というわけでYAYAlintのおかげでシステム辞書のエラーを一部駆逐できました。バグっていた証拠は下記の通りです。

github.com

配列のカンマ入れ忘れてたり、変数の初期化を素で忘れてたり、果てはargv(ローカル変数を示すアンダースコア忘れ)とかrefereceとか。リファレスってなんだよ。

なお、システム辞書のデバッグ作業の際は、-u (--nounused) オプションを入れて未使用変数・関数のエラーを表示しないようにしていました。システム辞書だから妄想上?のゴーストから参照されているはずの関数や変数が存在しますからね。

なお、この修正は紺野ややめ / 紺野りりすにすでに投入済です。

ここではリントの言葉で話せ

というわけで、いきなりYAYA公式辞書たるシステム辞書のデバッグで、極めてlintらしい活躍をしてくれました。もうタタキノフ氏に足向けて寝られません。お礼に焼き芋コンテナに詰めて貨車に載せて1300トンぐらい送りつけたい気分です。

ところで、YAYAlintみたいに口うるさいものがSSPにもありましたよね。シェルのsurfaces.txtのエラーがたくさん出るアレです。実装方法はまるで違いますが、アレもsurfaces_lint的なものを目指しています。まあsurfaces.txtは最初から最後まで静的なので、今更「静的解析」とわざわざ言うほどのものではないんですけどね。

これらの口うるさい解析ツールを最大限活用することで、あなたの開発者ライフがゼロ…じゃない、極めて幸せになることでしょう。

ぜひ ぜひ ぜひ 活用しましょう。

今回はとりあえずここまでです。おあとがよろしいようで。

adventar.org

初出:2021/12/14用に突然思いつきました。