亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何找出 golang SSA 函數返回類型

如何找出 golang SSA 函數返回類型

Go
夢里花落0921 2022-08-30 21:57:17
你好,我是靜態分析的新手,并嘗試使用golang的SSA包來分析我們的代碼。例如,我想打印包中的所有函數信息,示例代碼是:dir := PROJECT_PATHcfg := 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)}然后我發現我沒有辦法訪問這個函數的返回值的類型(參考 https://pkg.go.dev/golang.org/x/tools/go/ssa#Function 的文檔)有沒有辦法通過使用ssa工具或其他工具來分析函數的返回值類型?
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

您可以通過以下方式獲取簽名,從而返回函數的類型


 f.Signature.Results()

如果您不需要調用遍歷,則可以直接從結構中獲取函數信息ssa.package


for k, v := range pckg.Members {

   c, ok := v.(*ssa.Function)

   if ok{

    ...

   }

}


查看完整回答
反對 回復 2022-08-30
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號