gospal
1.0.0
これは、GOプログラム用の研究プロトタイプ静的分析器です。現在、フレームワークは2つの主要なツール、 migoinferとssaviewで構成されていますが、このフレームワークに基づいて、異なる出力形式でより多くのバックエンドを構築できるはずです。
ツールを構築するには、 go get使用してください。
go get github.com/nickng/gospal/cmd/...
Migo推測ツール( cmd/migoinfer )は、GOソースコードからMIGOタイプを誘導します。 MIGOタイプの正式な定義はこのペーパーで公開されており、テキスト形式の出力の形式については、MIGOパッケージに記載されています。
たとえば、このサンプルプログラムmain.goを考えると、
package main
func main() {
ch := make(chan int)
go Sender(ch)
fmt.Println(<-ch)
}
func Sender(ch chan int) {
ch <- 1
}
これは推論の予想される出力であり、通信を伴わない追加の出力defがあります。
$ migoinfer main.go
def main.main():
let t0 = newchan main.main0.t0_chan0, 0;
spawn main.Sender(t0);
recv t0;
def main.Sender(ch):
send ch
これは研究プロトタイプであり、GOのすべての機能をカバーするわけではありません。サンプルコードのわずかな断片とあなたが期待するものを備えたエラーを報告してください。ただし、静的分析の制限のためにタイプをしっかりと推測することはできないかもしれないことに注意してください。
SSAビューアー( cmd/ssaview )は、特定のソースコードのSSA形式を表示するためのGOプロジェクトの追加ツールのssaパッケージのラッパーです。 ssadumpに似ていますが、このプロジェクトではmigoinferツールとビルド構成を共有しています。