Ini adalah penganalisa statis prototipe penelitian untuk program GO. Saat ini kerangka kerja terdiri dari dua alat utama, migoinfer dan ssaview , tetapi harus dapat membangun lebih banyak backend dengan format output yang berbeda berdasarkan kerangka kerja ini.
Untuk membangun alat, gunakan go get :
go get github.com/nickng/gospal/cmd/...
Migo Infer Tool ( cmd/migoinfer ) menyimpulkan jenis MIGO dari kode sumber GO. Definisi formal jenis MIGO diterbitkan dalam makalah ini, dan format output dalam bentuk tekstual dijelaskan dalam paket MIGO.
Misalnya, mengingat program sampel ini main.go ,
package main
func main() {
ch := make(chan int)
go Sender(ch)
fmt.Println(<-ch)
}
func Sender(ch chan int) {
ch <- 1
}
Ini adalah output yang diharapkan dari inferensi, dengan def s output tambahan yang tidak melibatkan komunikasi.
$ 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
Ini adalah prototipe penelitian dan tidak mencakup semua fitur GO. Harap laporkan kesalahan dengan fragmen kecil kode sampel dan apa yang Anda harapkan untuk dilihat, namun, mencatat bahwa tidak mungkin untuk menyimpulkan jenisnya dengan baik karena keterbatasan analisis statis.
Penampil SSA ( cmd/ssaview ) adalah pembungkus atas paket ssa dari alat tambahan proyek GO untuk melihat bentuk SSA dari kode sumber yang diberikan. Ini mirip dengan ssadump tetapi berbagi konfigurasi build dengan alat migoinfer dalam proyek ini.