Outil de ligne de commande permettant de rechercher les dépendances Bazel qui ne sont pas réellement utilisées dans le code.
Une dépendance Bazel inutilisée est une entrée inutile dans le champ deps
d'une cible java_library
ou java_binary
dans un fichier BUILD
, ce qui signifie que le code en cours de compilation n'a réellement aucune dépendance sur cette bibliothèque. Au fil du temps, les dépendances inutilisées s'accumulent à mesure que le code change et les fichiers BUILD
ne sont pas mis à jour pour refléter ces modifications.
Dépendances inutilisées :
augmenter les temps de construction et de synchronisation locaux
augmenter les temps d'exécution du CI
conduire à des artefacts de déploiement plus importants
Les problèmes posés par les dépendances inutilisées ne feront qu'empirer à mesure que votre code grandit et vieillit... à moins qu'il n'existe un moyen de les détecter et de les supprimer par programme. Heureusement, il y en a maintenant !
Exécutez unused-deps.sh
bazelPath
est le chemin d'accès à la cible ou au répertoire à analyser au format d'étiquette Bazel. Cela peut signifier soit « analyser » cette cible, soit analyser toutes les cibles situées sous ce répertoire.
outputFile
est le chemin absolu du fichier dans lequel écrire les commandes Buildozer
Cela peut prendre un certain temps (d'après notre expérience, l'exécuter sur quatre millions de lignes Java prend environ six heures). Si vous analysez une sous-section plus petite, cela devrait être beaucoup plus rapide. Le script imprimera la progression de la construction qu'il exécute, afin que vous puissiez avoir une idée approximative du temps restant.
Exécutez les commandes Buildozer avec bash
pour supprimer par programme les dépendances inutilisées détectées
Vérifiez que la cible est toujours compilée à l'aide de bazel build
. Si votre build échoue, lisez la section ** Dépannage ** ci-dessous.
> ./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
Cet outil ne prend pas en charge les éléments suivants :
Dépendances tierces (#2)
Scala (#3) et Kotlin (#4)
Cibles de test Java (#5)