2018」24日目の記事です。devblog.thebase.inはじめにBASEでエンジニアとしてインターンをしている池田です。今日はクリスマスイブということで、以前から気になっていたグリューワイン(ドイツのクリスマスに欠かせないホットワイン)をクリスマスマーケットに飲みに来ています。BANKというBASEの100%子会社にて金融事業の立ち上げを行っています。BANKのプロダクトのAPIはGoを使って書かれているのですが、BASEでのGoの使用はこのプロジェクトが初だったので、開発基盤整備の一貫で様々なlinterの導入を行いました。その際にlinterの内部がどうなっているかに興味を持ち、すごく簡単なlinterの仕組みを実際に作ってみたので、今回はその知見をお話しします。Goと静的解析Goには、標準パッケージとして静的解析を行うためのgoパッケージが存在します。何よりGoは文法がシンプルな静的型付け言語なので、静的解析をとても簡単に行うことができました。抽象構文木)を取り扱うgo/astやgo/parserパッケージを用います。{...}の方がいいといったことを検出してみたいと思います。今回の静的解析の簡単な流れを下図に示します。抽象構文木のノードを探索していき、条件に当てはまるものがあったら警告するといった感じです。やってみるでは実際にコードを見ていきましょう。