Инструмент командной строки для поиска зависимостей Bazel, которые фактически не используются в коде.
Неиспользуемая зависимость Bazel — это ненужная запись в поле deps
цели java_library
или java_binary
в файле BUILD
, что означает, что компилируемый код фактически не имеет никакой зависимости от этой библиотеки. Со временем неиспользуемые зависимости накапливаются по мере изменений кода, и файлы BUILD
не обновляются с учетом этих изменений.
Неиспользуемые зависимости:
увеличить время локальной сборки и синхронизации
увеличить время выполнения CI
привести к более крупным артефактам развертывания
Проблемы, возникающие из-за неиспользуемых зависимостей, будут только усугубляться по мере роста и старения вашего кода... если только не существует способа их программного обнаружения и удаления. К счастью, теперь есть!
Запустите unused-deps.sh
bazelPath
— это путь к цели или каталогу для анализа в формате метки Bazel. Это может означать либо «анализ» этой цели, либо анализ всех целей в этом каталоге.
outputFile
— абсолютный путь к файлу, в который будут записываться команды Buildozer.
Это может занять некоторое время (по нашему опыту, запуск на четырех миллионах строк Java займет около шести часов). Если вы анализируете меньший подраздел, это должно быть намного быстрее. Скрипт распечатает ход выполнения сборки, чтобы вы могли получить приблизительное представление о том, сколько времени осталось.
Запустите команды Buildozer с помощью bash
чтобы программно удалить обнаруженные неиспользуемые зависимости.
Убедитесь, что целевой объект по-прежнему компилируется с использованием bazel build
. Если сборка не удалась, прочтите раздел **Устранение неполадок** ниже.
> ./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
Этот инструмент не поддерживает следующее:
Сторонние зависимости (#2)
Scala (№3) и Котлин (№4)
Цели тестирования Java (#5)