Goの静的解析に入門した
目次
tenntenn Conference 2023 にスポンサーし、Goの静的解析を完全に理解した話 を読んでから静的解析が気になっていたのでこれをやってみた。
以下のようなソースコードからGopher
型を探し出す簡単な解析スクリプトを通してGoでの静的解析の流れやASTの探索方法、型チェックを用いたより詳細な解析方法などを学べた。
package main import ( "fmt" ) type Gopher struct { // ここ Gopher string `json:"gopher"` } func main() { const gopher = "GOPHER" gogopher := GOPHER() gogopher.Gopher = gopher fmt.Println(gogopher) } func GOPHER() (gopher *Gopher) { // ここ gopher = &Gopher{Gopher: "gopher"} // ここ return }
https://golangtokyo.github.io/codelab/find-gophers/?index=codelab#2 より
解説がかなり丁寧でわかりやすかったので静的解析初心者にはかなりありがたかった。
静的解析を使えば単なるgrep
ではできないことができるイメージが実際に掴めたので早速linterを作ってみようと思う。
Read other posts