我试图使用go/parse,go/token和go/ast模块对 Go 项目中的函数调用进行一些静态分析,但我不知道如何确定给定ast.Ident对象的类型。
例如,如果解析这样的内容:
textToContain := bytes.NewBuffer([]byte{})
// lots of other code
text := textToContain.String() // <- I care about this function call
Run Code Online (Sandbox Code Playgroud)
(这是从这里解析的:file)
编辑:需要大量代码来解析它,所以我没有将其发布在这里,但您可以在以下位置找到它作为要点: https: //gist.github.com/EricChiang/6735340c5fa3d2de2b73
ast.Print我使用该函数打印了以下代码
0 *ast.CallExpr {
1 . Fun: *ast.SelectorExpr {
2 . . X: *ast.Ident {
4 . . . Name: "textToContain"
5 . . . Obj: *ast.Object {
6 . . . . Kind: var
7 . . . . Name: "textToContain" …Run Code Online (Sandbox Code Playgroud)