هذا هو محلل ثابت للبحث عن برامج GO. يتكون الإطار حاليًا من أداتين رئيسيين ، migoinfer و ssaview ، ولكن يجب أن يكون قادرًا على بناء المزيد من الخلفية بتنسيقات إخراج مختلفة بناءً على هذا الإطار.
لبناء الأداة ، استخدم go get :
go get github.com/nickng/gospal/cmd/...
أداة MIGO Invent ( cmd/migoinfer ) تثير أنواع Migo من رمز مصدر GO. يتم نشر التعريفات الرسمية لأنواع 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-Form من رمز مصدر معين. إنه مشابه لـ ssadump ولكنه يشارك تكوين البناء باستخدام أداة migoinfer في هذا المشروع.