أداة سطر الأوامر للعثور على تبعيات 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) وكوتلين (#4)
أهداف اختبار جافا (#5)