GO-CALLVIS es una herramienta de desarrollo para ayudar a visualizar el gráfico de llamadas de un programa GO utilizando una vista interactiva.
El propósito de esta herramienta es proporcionar a los desarrolladores una descripción visual de un programa GO utilizando datos del gráfico de llamadas y sus relaciones con paquetes y tipos. Esto es especialmente útil en proyectos más grandes donde la complejidad del código mucho mayor o cuando simplemente está tratando de comprender el código de otra persona.

Consulte el código fuente de la imagen de arriba.
Ejecuta el análisis del puntero para construir el gráfico de llamadas del programa y utiliza los datos para generar salida en formato DOT, que se puede representar con las herramientas GraphViz.
-graphviz bandera)Para instalar Go-Calvis, ejecute:
# Latest release
go install github.com/ofabry/go-callvis@latest
# Development version
go install github.com/ofabry/go-callvis@masterAlternativamente, clona el repositorio y compile el código fuente:
# Clone repository
git clone https://github.com/ofabry/go-callvis.git
cd go-callvis
# Compile and install
make installPara usar la vista interactiva proporcionada por un servidor web que sirve imágenes SVG de paquetes enfocados, simplemente puede ejecutar:
go-callvis <target package>
El servidor HTTP está escuchando en http: // localhost: 7878/Por defecto, use la opción -http="ADDR:PORT" para cambiar la dirección del servidor HTTP.
Para generar un solo archivo de salida, use la opción -file=<file path> para elegir el destino del archivo de salida.
El formato de salida predeterminado a svg , use opción -format=<svg|png|jpg|...> para elegir un formato de salida diferente.
Usage of go-callvis:
-debug
Enable verbose log.
-file string
output filename - omit to use server mode
-cacheDir string
Enable caching to avoid unnecessary re-rendering.
-focus string
Focus specific package using name or import path. (default "main")
-format string
output file format [svg | png | jpg | ...] (default "svg")
-graphviz
Use Graphviz's dot program to render images.
-group string
Grouping functions by packages and/or types [pkg, type] (separated by comma) (default "pkg")
-http string
HTTP service address. (default ":7878")
-ignore string
Ignore package paths containing given prefixes (separated by comma)
-include string
Include package paths with given prefixes (separated by comma)
-limit string
Limit package paths to given prefixes (separated by comma)
-minlen uint
Minimum edge length (for wider output). (default 2)
-nodesep float
Minimum space between two adjacent nodes in the same rank (for taller output). (default 0.35)
-nointer
Omit calls to unexported functions.
-nostd
Omit calls to/from packages in standard library.
-rankdir
Direction of graph layout [LR | RL | TB | BT] (default "LR")
-skipbrowser
Skip opening browser.
-tags build tags
a list of build tags to consider satisfied during the build. For more information about build tags, see the description of build constraints in the documentation for the go/build package
-tests
Include test code.
-version
Show version and exit.
Ejecute go-callvis -h para enumerar todas las opciones compatibles.
Aquí puede encontrar descripciones para varios tipos de salida.
| Representa | Estilo |
|---|---|
focused | color azul |
stdlib | color verde |
other | color amarillo |
| Representa | Estilo |
|---|---|
exported | borde en negrita |
unexported | borde normal |
anonymous | borde |
| Representa | Estilo |
|---|---|
internal | color negro |
external | color marrón |
static | línea continua |
dynamic | línea discontinua |
regular | flecha simple |
concurrent | flecha con círculo |
deferred | flecha con diamante |
Aquí hay un ejemplo para la sincronización del proyecto.

Consulte más ejemplos y usadas opciones de comando.
Únase al canal #Go-Calvis en gophers.slack.com. (( ¿Aún no es miembro? Obtener invitación)
¿Encontraste algún error o tuviste algunas sugerencias?
¿Quieres contribuir al proyecto?
El objetivo ideal de este proyecto es hacer una aplicación web que almacene localmente los datos del gráfico de llamadas y luego proporcionar un acceso rápido de los gráficos de llamadas para cualquier paquete de su árbol de dependencia. Al principio, mostraría un mapa interactivo de las dependencias generales entre los paquetes y luego seleccionando un paquete particular mostraría el gráfico de llamadas y proporcionaría varias opciones para alterar la salida dinámicamente.