gospal
1.0.0
这是用于GO程序的研究原型静态分析仪。目前,该框架由两个主要工具组成,即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 s。
$ 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 )是从GO项目的额外工具中查看给定源代码的SSA形式的ssa软件包上的包装器。它类似于ssadump但与该项目中的migoinfer工具共享构建配置。