Befehlszeilentool zum Auffinden von Bazel-Abhängigkeiten, die nicht tatsächlich im Code verwendet werden.
Eine nicht verwendete Bazel-Abhängigkeit ist ein unnötiger Eintrag im deps
Feld eines java_library
oder java_binary
Ziels in einer BUILD
Datei, was bedeutet, dass der zu kompilierende Code eigentlich keine Abhängigkeit von dieser Bibliothek hat. Im Laufe der Zeit sammeln sich ungenutzte Abhängigkeiten an, da sich Code ändert und BUILD
Dateien nicht aktualisiert werden, um diese Änderungen widerzuspiegeln.
Ungenutzte Abhängigkeiten:
Erhöhen Sie die lokalen Build- und Synchronisierungszeiten
Erhöhen Sie die CI-Laufzeiten
zu größeren Bereitstellungsartefakten führen
Die Probleme, die durch ungenutzte Abhängigkeiten entstehen, werden nur noch schlimmer, wenn Ihr Code wächst und altert ... es sei denn, es gäbe eine Möglichkeit, sie programmgesteuert zu erkennen und zu entfernen. Zum Glück gibt es das jetzt!
Führen Sie unused-deps.sh
aus
bazelPath
ist der Pfad zum zu analysierenden Ziel oder Verzeichnis im Bazel-Label-Format. Dies kann entweder „analysieren“ dieses Ziels oder die Analyse aller Ziele unterhalb dieses Verzeichnisses bedeuten.
outputFile
ist der absolute Pfad zu der Datei, in die die Buildozer-Befehle geschrieben werden sollen
Dies kann eine Weile dauern (nach unserer Erfahrung dauert die Ausführung auf vier Millionen Java-Zeilen etwa sechs Stunden). Wenn Sie einen kleineren Unterabschnitt analysieren, sollte es viel schneller gehen. Das Skript gibt den Fortschritt des von ihm ausgeführten Builds aus, sodass Sie eine ungefähre Vorstellung davon erhalten, wie viel Zeit noch verbleibt.
Führen Sie die Buildozer-Befehle mit bash
aus, um die erkannten nicht verwendeten Abhängigkeiten programmgesteuert zu entfernen
Stellen Sie sicher, dass das Ziel weiterhin mit bazel build
kompiliert wird. Wenn Ihr Build fehlschlägt, lesen Sie den Abschnitt **Fehlerbehebung** weiter unten.
> ./unused-deps.sh //src/main/java/com/stripe/payments/server/worker/... worker-commands.txt ... Ignored dependencies: 3802 ------------------------------ Considered dependencies: 467 Used dependencies: 432 (93%) Unused dependencies: 35 (7%) ------------------------------ Time elapsed: 0 seconds Wrote buildozer commands to remove unused dependencies to: worker-commands.txt > bash worker-commands.txt fixed src/main/java/com/stripe/payments/server/worker/db/BUILD ... fixed src/main/java/com/stripe/payments/server/worker/workflows/interfaces/BUILD > bazel build //src/main/java/com/stripe/payments/server/worker/db/... ... INFO: Build completed successfully, 2867 total actions
Dieses Tool unterstützt Folgendes nicht:
Abhängigkeiten von Drittanbietern (#2)
Scala (#3) und Kotlin (#4)
Java-Testziele (#5)