Go-Callvis ist ein Entwicklungswerkzeug, mit dem Sie mithilfe der interaktiven Ansicht die Call-Diagramme des GO-Programms visualisieren können.
Der Zweck dieses Tools besteht darin, Entwicklern einen visuellen Überblick über ein GO -Programm mit Daten aus dem Anrufdiagramm und ihren Beziehungen zu Paketen und Typen zu geben. Dies ist besonders in größeren Projekten nützlich, bei denen die Komplexität des Codes viel höher ist oder wenn Sie nur versuchen, den Code von jemand anderem zu verstehen.

Schauen Sie sich den Quellcode für das obige Bild an.
Es wird die Zeigeranalyse ausgeführt, um den Anrufdiagramm des Programms zu erstellen, und verwendet die Daten, um Ausgaben im Punktformat zu generieren, das mit Graphviz -Tools gerendert werden kann.
-graphviz -Flag erforderlich)Um Go-Callvis zu installieren, rennen Sie:
# Latest release
go install github.com/ofabry/go-callvis@latest
# Development version
go install github.com/ofabry/go-callvis@masterAlternativ klonen Sie das Repository und kompilieren Sie den Quellcode:
# Clone repository
git clone https://github.com/ofabry/go-callvis.git
cd go-callvis
# Compile and install
make installUm die interaktive Ansicht zu verwenden, die von einem Webserver bereitgestellt wird, der SVG -Bilder von fokussierten Paketen bedient, können Sie einfach ausführen:
go-callvis <target package>
Der HTTP -Server hört auf http: // localhost: 7878/standardmäßig verwenden Sie die Option -http="ADDR:PORT" um die HTTP -Serveradresse zu ändern.
So generieren Sie eine einzelne Ausgabedatei -file=<file path> .
Das Ausgabebildformat standardmäßig für svg , verwenden Sie Option -format=<svg|png|jpg|...> um ein anderes Ausgabebildformat zu wählen.
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.
Führen Sie go-callvis -h aus, um alle unterstützten Optionen aufzulisten.
Hier finden Sie Beschreibungen für verschiedene Arten von Ausgabe.
| Repräsentiert | Stil |
|---|---|
focused | Blaue Farbe |
stdlib | grüne Farbe |
other | Gelbe Farbe |
| Repräsentiert | Stil |
|---|---|
exported | kühne Grenze |
unexported | Normale Rand |
anonymous | gepunktete Grenze |
| Repräsentiert | Stil |
|---|---|
internal | schwarze Farbe |
external | braune Farbe |
static | durchgezogene Linie |
dynamic | gestrichelte Linie |
regular | Einfacher Pfeil |
concurrent | Pfeil mit Kreis |
deferred | Pfeil mit Diamant |
Hier ist ein Beispiel für die Projektsynkthanz.

Schauen Sie sich weitere Beispiele und gebrauchte Befehlsoptionen an.
Treten Sie #Go-Callvis Channel bei gophers.slack.com bei. ( Noch kein Mitglied? Holen Sie sich eine Einladung)
Haben Sie Fehler gefunden oder einige Vorschläge gehabt?
Möchten Sie zum Projekt beitragen?
Das ideale Ziel dieses Projekts ist es, Web -App zu erstellen, die die Anrufgrafaten lokal speichern und dann den schnellen Zugriff auf die Anrufdiagramme für jedes Paket Ihres Abhängigkeitsbaums ermöglichen. Zunächst würde es eine interaktive Karte der Gesamtabhängigkeiten zwischen Paketen angezeigt und dann durch die Auswahl eines bestimmten Pakets das Anrufdiagramm angezeigt und verschiedene Optionen zur dynamischen Änderung der Ausgabe bereitstellen.