Как создать граф вызовов для приложения Cobra CLI - PullRequest
0 голосов
/ 04 октября 2019

Мне нужно визуализировать граф вызовов клиентского приложения, построенного на кобре.

Например, цель - 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"
...