Ferramenta de linha de comando para encontrar dependências do Bazel que não são realmente usadas no código.
Uma dependência Bazel não utilizada é uma entrada desnecessária no campo deps
de um destino java_library
ou java_binary
em um arquivo BUILD
, o que significa que o código que está sendo compilado não tem nenhuma dependência dessa biblioteca. Com o tempo, as dependências não utilizadas se acumulam à medida que o código é alterado e os arquivos BUILD
não são atualizados para refletir essas alterações.
Dependências não utilizadas:
aumentar os tempos de compilação e sincronização locais
aumentar os tempos de execução do CI
levar a artefatos de implantação maiores
Os problemas apresentados por dependências não utilizadas só piorarão à medida que seu código crescer e envelhecer... a menos que haja uma maneira de detectá-las e removê-las programaticamente. Felizmente, agora existe!
Execute unused-deps.sh
bazelPath
é o caminho para o destino ou diretório a ser analisado no formato de rótulo Bazel. Isso pode significar "analisar" este alvo ou analisar todos os alvos abaixo deste diretório.
outputFile
é o caminho absoluto para o arquivo no qual gravar os comandos do Buildozer
Isso pode demorar um pouco (em nossa experiência, executá-lo em quatro milhões de linhas de Java levará cerca de seis horas). Se você estiver analisando uma subseção menor, deverá ser muito mais rápido. O script imprimirá o andamento da construção executada, para que você possa ter uma ideia aproximada de quanto tempo resta.
Execute os comandos do Buildozer com bash
para remover programaticamente as dependências não utilizadas detectadas
Verifique se o destino ainda compila usando bazel build
. Se sua compilação falhar, leia a seção **Solução de problemas** abaixo.
> ./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 ferramenta não suporta o seguinte:
Dependências de terceiros (nº 2)
Scala (nº 3) e Kotlin (nº 4)
Alvos de teste Java (nº 5)