Herramienta de línea de comandos para encontrar dependencias de Bazel que en realidad no se utilizan en el código.
Una dependencia de Bazel no utilizada es una entrada innecesaria en el campo deps
de un destino java_library
o java_binary
en un archivo BUILD
, lo que significa que el código que se está compilando en realidad no tiene ninguna dependencia de esa biblioteca. Con el tiempo, las dependencias no utilizadas se acumulan a medida que se realizan cambios en el código y los archivos BUILD
no se actualizan para reflejar esos cambios.
Dependencias no utilizadas:
aumentar los tiempos de compilación y sincronización locales
aumentar los tiempos de ejecución de CI
conducir a artefactos de implementación más grandes
Los problemas planteados por las dependencias no utilizadas solo empeorarán a medida que su código crezca y envejezca... a menos que haya una manera de detectarlas y eliminarlas mediante programación. ¡Afortunadamente, ahora lo hay!
Ejecute unused-deps.sh
bazelPath
es la ruta al destino o directorio a analizar en formato de etiqueta Bazel. Esto puede significar "analizar" este objetivo o analizar todos los objetivos debajo de este directorio.
outputFile
es la ruta absoluta al archivo en el que escribir los comandos de Buildozer.
Esto podría llevar algún tiempo (según nuestra experiencia, ejecutarlo en cuatro millones de líneas de Java llevará alrededor de seis horas). Si está analizando una subsección más pequeña, debería ser mucho más rápido. El script imprimirá el progreso de la compilación que ejecuta, para que puedas tener una idea aproximada de cuánto tiempo queda.
Ejecute los comandos de Buildozer con bash
para eliminar mediante programación las dependencias no utilizadas detectadas.
Verifique que el destino aún se compila usando bazel build
. Si su compilación falla, lea la sección **Solución de problemas** a continuación.
> ./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
Esta herramienta no admite lo siguiente:
Dependencias de terceros (#2)
Scala (n.° 3) y Kotlin (n.° 4)
Objetivos de prueba de Java (n.º 5)