เครื่องมือบรรทัดคำสั่งสำหรับค้นหาการขึ้นต่อกันของ 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)
สกาล่า (#3) และ Kotlin (#4)
เป้าหมายการทดสอบ Java (#5)