emahiro/b.log

日々の勉強の記録とか育児の記録とか。

『静的解析をはじめよう - Gopherをさがせ!』をやった

golang.tokyoが公開しているCodeLabをやってみました。

golangtokyo.github.io

普段からあまりコードの静的解析をやっているわけではありませんが、Goで静的解析をする場合にはどうするのか、というのを学ぶにはとてもいい教材でした。

特に「構文解析」の章が勉強になって、以下の部分

   // ファイルごとのトークンの位置を記録するFileSetを作成する
    fset := token.NewFileSet()

    // ファイル単位で構文解析を行う
    f, err := parser.ParseFile(fset, "_gopher.go", nil, 0)
    if err != nil {
        log.Fatal("Error:", err)
    }

これだけで構文解析が完了して、あとはトークンの位置情報を記録した fset 変数を ast.Inspect メソッドに渡してガリガリ構文チェックする。
Goだと結構簡単にファイルの構文解析ができるんですね。

普段web開発にしか触れてないですけど、たまにこういったことに触れておきたいなと思いました。