Мне нужно визуализировать граф вызовов клиентского приложения, построенного на кобре.
Например, цель - kubectl. Что можно использовать для этого.
Я попытался go-callvis
, gocyto
и callgraph
безуспешно.
go-callvis возвращает ошибку:
2019/10/04 14:22:42 internal error in pointer analysis: not a tagged object: n201910 (please report this bug)
Упоминается в отчетах на github и не разрешается.
gocyto возвращает json:
{"nodes":[{"data":{"id":"n3","label":"inf","description":"gopkg.in/inf.v0","parent":"","color":"#dd494c"},"classes":["package"]},{"data":{"id":"n2","label":"init","parent":"n3","color":"#3d4cc4"},"classes":["global"]},{"data":{"id":"n4","label":"init$1","parent":"n3","color":"#f69bcf"},"classes":null}],"edges":[{"data":{"id":"n6","source":"n2","target":"n4"},"classes":["static","function","call"]},{"data":{"id":"n1","source":"n2","target":"n4"},"classes":["static","function","call"]},{"data":{"id":"n5","source":"n2","target":"n4"},"classes":["static","function","call"]}]}
и не нашел никакой информации о том, как его использовать в дальнейшем.
callgraph печатает огромное количество звонков, таких как:
"(*github.com/spf13/cobra.Command).preRun" "net/http.http2registerHTTPSProtocol$1"
"(*github.com/spf13/cobra.Command).preRun" "(*net/http.http2Transport).initConnPool"
"(*github.com/spf13/cobra.Command).preRun" "(*net/http.http2ClientConn).onIdleTimeout"
"(*github.com/spf13/cobra.Command).preRun" "(net/http.http2bodyWriterState).on100"
"(*github.com/spf13/cobra.Command).preRun" "net/http.envProxyFunc$1"