[PYTHON] Visualisieren Sie die internen Paketbeziehungen von Go auf Commit-by-Commitment-Basis

call-aimation.gif
Verwendetes Programm: bxcodec / go-clean-arch

Überblick

  1. Es ist schwierig, Programme mit komplizierten Beziehungen zwischen den internen Paketen von Go zu verstehen.

Vorbereitung

Code

Was ich getan habe

  1. Holen Sie sich das Commit-Protokoll
  2. Führen Sie den Befehl für jedes Commit aus
  3. Geben Sie die internen Paketbeziehungen von Go aus, um Faril zu markieren und ein GIF zu erstellen
  4. Erstellen Sie für jedes Commit eine Animation mit derselben GIF-Größe

1. Holen Sie sich das Commit-Protokoll

Sie können es mit git log --pretty = oneline erhalten. Jedenfalls mit Python

res = subprocess.check_output(["git", "-C", path_dir, "log", "--pretty=oneline"])

Ich möchte nur den Hash-Wert des Commits erhalten (Hash-Wert + Kommentar). Ich habe nur den ersten Hash-Wert durch ein Leerzeichen getrennt und es in eine Liste gemacht.

2. Führen Sie den Befehl für jedes Commit aus

Ich habe jedes Commit zurückgesetzt und den Befehl ausgeführt (gibt es einen besseren Weg als das Zurücksetzen?).

for commit in log_list:
    subprocess.call(["git", "-C", path_dir, "reset", "--hard", commit]) |
    command(path_dir)

Verwenden Sie den Pfad des Verzeichnisses, in dem sich das Programm befindet, wenn Sie den Befehl ausführen.

3. Geben Sie die internen Paketbeziehungen von Go aus, um Faril zu markieren und ein GIF zu erstellen

3.1. Erstellung von Punktdateien

Das ist das Schwierigste. Es gibt ein sehr nützliches Paket namens parser, das das Paket erhält, das Sie in die Datei importieren. Dies kann von Datei zu Paket gruppiert werden.

Ärger

3.2. Erstellen einer GIF-Datei aus einer Punktdatei

Verwenden Sie graphviz. dot -T gif sample.dot -o sample.gif

4. Erstellen Sie für jedes Commit eine Animation mit derselben GIF-Größe

4.1. GIF-Größen ausrichten

Wenn beim Erstellen einer Animation die Größe jeder Datei unterschiedlich ist, wird die Größe abgeschnitten. mogrify -resize (width)x(height)! *.gif Wählen Sie eine Größe, die sich gut anfühlt.

4.2. Animationserstellung

Verwenden Sie ImageMagick. convert -delay 5 -loop 0 *.gif animation.gif

Referenzierte Site

von jetzt an

Die Anzeigeposition des Diagramms wird für jedes Commit unterschiedlich und ist beim Animieren schwer zu erkennen. Ich möchte es irgendwie arrangieren.

Recommended Posts

Visualisieren Sie die internen Paketbeziehungen von Go auf Commit-by-Commitment-Basis
Registrieren Sie das Paket bei PyPI
Folium: Visualisieren Sie Daten auf einer Karte mit Python
Visualisiere grib2 auf einer Karte mit Python (matplotlib)