Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查找golang SSA函数返回类型_Go_Static Analysis_Ssa - Fatal编程技术网

如何查找golang SSA函数返回类型

如何查找golang SSA函数返回类型,go,static-analysis,ssa,Go,Static Analysis,Ssa,您好,我是静态分析新手,尝试使用golang的SSA包来分析我们的代码。例如,我想打印包中的所有函数信息,示例代码为: dir := PROJECT_PATH cfg := packages.Config{ Mode: packages.LoadAllSyntax, Dir: dir, } initial, _ := packages.Load(&cfg, "./") // Create SSA packages for well-typed pa

您好,我是静态分析新手,尝试使用golang的SSA包来分析我们的代码。例如,我想打印包中的所有函数信息,示例代码为:

dir := PROJECT_PATH
cfg := packages.Config{
    Mode: packages.LoadAllSyntax,
    Dir: dir,
}

initial, _ := packages.Load(&cfg, "./")

// Create SSA packages for well-typed packages and their dependencies.
prog, _ := ssautil.AllPackages(initial, 0)

// Build SSA code for the whole program.
prog.Build()
callGraph = cha.CallGraph(prog)

for f, node := range callGraph.Nodes{
    // f is of ssa.Function 
    fmt.Println("func:", f, f.Name(), f.Syntax(), f.Params)
}
然后我发现我无法访问此函数的返回值类型(参考文档)
有没有办法使用ssa工具或其他工具来分析函数返回值的类型?

您可以通过

 f.Signature.Results()
如果不需要调用图遍历,可以直接从
ssa.package
struct获取函数信息

for k, v := range pckg.Members {
   c, ok := v.(*ssa.Function)
   if ok{
    ...
   }
}