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> <outputFile>
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 <outputFile>
para remover programaticamente as dependências não utilizadas detectadas
Verifique se o destino ainda compila usando bazel build <bazelPath>
. 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)