gospal
1.0.0
이것은 GO 프로그램을위한 연구 프로토 타입 정적 분석기입니다. 현재 프레임 워크는 migoinfer 와 ssaview 두 가지 주요 도구로 구성되지만이 프레임 워크를 기반으로 다른 출력 형식으로 더 많은 백엔드를 구축 할 수 있어야합니다.
도구를 구축하려면 go get 사용하십시오.
go get github.com/nickng/gospal/cmd/...
Migo Infer Tool ( 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 도구와 빌드 구성을 공유합니다.