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工具共享構建配置。