Alat baris perintah untuk menemukan dependensi Bazel yang sebenarnya tidak digunakan dalam kode.
Ketergantungan Bazel yang tidak digunakan adalah entri yang tidak perlu di bidang deps
target java_library
atau java_binary
dalam file BUILD
, artinya kode yang dikompilasi sebenarnya tidak memiliki ketergantungan apa pun pada perpustakaan tersebut. Seiring waktu, dependensi yang tidak digunakan terakumulasi seiring perubahan kode dan file BUILD
tidak diperbarui untuk mencerminkan perubahan tersebut.
Dependensi yang tidak digunakan:
meningkatkan waktu pembangunan dan sinkronisasi lokal
meningkatkan waktu berjalan CI
menyebabkan artefak penyebaran yang lebih besar
Masalah yang ditimbulkan oleh dependensi yang tidak digunakan hanya akan bertambah buruk seiring bertambahnya usia kode Anda... kecuali ada cara untuk mendeteksi dan menghapusnya secara terprogram. Untungnya, sekarang ada!
Jalankan unused-deps.sh
bazelPath
adalah jalur menuju target atau direktori untuk dianalisis dalam format label Bazel. Ini bisa berarti "menganalisis" target ini atau menganalisis semua target di bawah direktori ini.
outputFile
adalah jalur absolut ke file tempat menulis perintah Buildozer
Ini bisa memakan waktu cukup lama (menurut pengalaman kami, menjalankannya di empat juta jalur Java akan memakan waktu sekitar enam jam). Jika Anda menganalisis subbagian yang lebih kecil, hal itu akan jauh lebih cepat. Skrip akan mencetak kemajuan pembangunan yang dijalankannya, sehingga Anda bisa mendapatkan gambaran kasar tentang berapa banyak waktu yang tersisa.
Jalankan perintah Buildozer dengan bash
untuk menghapus dependensi tidak terpakai yang terdeteksi secara terprogram
Verifikasi bahwa target masih dikompilasi menggunakan bazel build
. Jika build Anda gagal, baca bagian ** Pemecahan Masalah ** di bawah.
> ./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
Alat ini tidak mendukung hal berikut:
Ketergantungan pihak ketiga (#2)
Scala (#3) dan Kotlin (#4)
Target pengujian Java (#5)