This commit is contained in:
eson 2023-07-12 02:20:54 +08:00
parent b13fb5e2ac
commit 08cd7e6a4c

38
main.go
View File

@ -5,9 +5,47 @@ import (
"go/ast"
"go/parser"
"go/token"
"os"
)
func main() {
// 设置文件路径
filePath := "/home/eson/workspace/requests"
// 解析指定目录下的所有Go源代码文件
fset := token.NewFileSet()
pkgs, err := parser.ParseDir(fset, filePath, nil, 0)
if err != nil {
fmt.Println(err)
return
}
// 遍历每个包
for _, pkg := range pkgs {
// 遍历每个文件
for _, file := range pkg.Files {
// 遍历每个声明
for _, decl := range file.Decls {
// 检查声明是否为函数声明
if decl, ok := decl.(*ast.FuncDecl); ok {
// 检查函数是否导出(暴露)
if decl.Recv == nil && decl.Name.IsExported() {
// 打印函数签名
fmt.Printf("%s(%#v, %#v) error\n", decl.Name, decl.Type.Params, decl.Type.Results)
}
}
}
}
}
}
// 辅助函数:将类型转换为字符串表示
func typeString(typ ast.Expr) string {
return os.Getenv("GOPATH") + "/src/reflect/type.go" // 这里只是一个示例,你需要替换为你的实际代码来解析类型并将其转换为字符串表示
}
func main2() {
fset := token.NewFileSet()
pkgs, err := parser.ParseDir(fset, "/home/eson/workspace/requests", nil, 0)
if err != nil {