يشغّل elide rewrite وصفات OpenRewrite على مصادر Java الرئيسية في مشروع Elide. استخدمه لأتمتة تعديلات
الشيفرة المصدرية، ومعاينة الفروق، وتطبيق الوصفة نفسها من الطرفية أو في CI.
ميزة تجريبية في 1.6.0؛ ومن المخطط تحسين توافق الوصفات في 1.6.1.
معاينة وصفة وتطبيقها
شغّل هذه الأوامر من مشروع فيه elide.pkl ومصادر Java:
elide rewrite --list
elide rewrite org.openrewrite.java.RemoveUnusedImports --dry-run
elide rewrite org.openrewrite.java.RemoveUnusedImports
elide testيطبع --list أسماء الوصفات المتاحة وأسماء عرضها. ويطبع --dry-run الفروق المقترحة دون تغيير ملفات
المصدر. احذفه لتطبيق التغييرات، ثم شغّل اختباراتك. قد يكتب حلّ التبعيات والفهرسة والتصريف حالة البناء
حتى أثناء التشغيل التجريبي.
لمشروع مصغّر، أنشئ elide.pkl:
amends "elide:project.pkl"
name = "rewrite-demo"والملف src/main/java/demo/Main.java:
package demo;
import java.util.List;
public class Main {
public static void main(String[] args) {
System.out.println("Hello");
}
}تحذف الوصفة RemoveUnusedImports الاستيراد غير المستخدم List. تترك المعاينة الملف دون تغيير، وبعد
التطبيق لا يجد التشغيل الثاني ما يغيّره.
إضافة وحدات الوصفات
صرّح بملفات JAR الخاصة بالوصفات في dependencies.maven.devPackages. استبدل الإحداثية التوضيحية أدناه
بالإحداثية والإصدار المنشورين لوحدة الوصفات لديك:
dependencies {
maven {
devPackages {
"com.example:rewrite-recipes:1.0.0"
}
}
}شغّل elide rewrite --list مجددًا لاكتشاف وصفات الوحدة. يكتشف Elide أصناف الوصفات والوصفات التصريحية
بصيغة YAML المحزومة تحت META-INF/rewrite/ في ملفات JAR تلك. اختر الوصفة التصريحية باسمها المصرَّح به،
إذ لا يوجد خيار في CLI لتحميل ملف YAML منفرد من مجلد المشروع.
تُشغَّل الوصفات بالترتيب الذي تُذكر به في سطر الأوامر:
elide rewrite org.openrewrite.java.RemoveUnusedImports org.openrewrite.java.format.AutoFormat --dry-runيحلّ Elide مكتبات الوصفات بمعزل عن تبعيات التطبيق في المشروع. اختر وحدات وصفات متوافقة مع الإصدار المضمّن OpenRewrite 8.90.4، فالتصريح بوحدة تطلب نواة أحدث لا يرقّي إصدار نواة المشغّل.
كيف يُستخدم الفهرس
يزوّد فهرس شيفرة التبعيات في Elide محلّل Java والكتالوج الذي تُكتشف منه الوصفات بمعلومات الأنواع والأعضاء في التبعيات. وتبني إعادة الكتابة طبقات فهرس التبعيات اللازمة تلقائيًا.
قبل إعادة الكتابة، يصرّف Elide مصادر Java و Kotlin الرئيسية ويفهرس مراجعها. وبالنسبة إلى الشروط المسبقة الصريحة المدعومة للأنواع والدوال، يستخدم تلك المراجع ورموز الشيفرة المصدرية لاختيار ملفات Java المرشّحة قبل أن يحلّلها OpenRewrite. ويظل OpenRewrite يقيّم الشروط المسبقة للوصفة على الملفات المختارة.
تدعم التصفية البحث الحرفي عن الأنواع والدوال في الشروط المسبقة التصريحية، وبيانات وصفية اختيارية للشروط المسبقة توفّرها وحدات الوصفات. وعند وجود أنماط غير مدعومة أو بيانات فهرس ناقصة، تُحفظ مجموعة المصادر كاملة. والوصفات التي تحتاج إلى فحص المشروع كله تحلّل مجموعة المصادر كاملة أيضًا. تقلّل مجموعة مرشّحين أصغر عمل التحليل، لكن للتصريف والفهرسة كلفتهما الخاصة.
لتخطي خطوة التصريف والتصفية:
elide rewrite org.openrewrite.java.RemoveUnusedImports --dry-run --no-prefilterيحلّل هذا كل مصادر Java الرئيسية، ويظل يستخدم فهرس التبعيات لمعلومات الأنواع. وهو مفيد للمقارنة مع تشغيل
مُصفّى أو لمحاولة إصلاح مصادر لا تُصرَّف. ويتخطى --list أيضًا تصريف المصادر الرئيسية.
الخيارات
| الخيار | التأثير |
|---|---|
--list | عرض الوصفات المتاحة ثم الخروج. |
--dry-run | طباعة الفروق دون تطبيق تغييرات على المصادر. |
--no-prefilter | تخطي تصريف المصادر الرئيسية وتصفية المرشّحين. |
--offline | استخدام التبعيات المتاحة محليًا، والفشل إن غابت مُخرَجات مطلوبة. |
قد ينزّل التشغيل الأول تبعيات المشروع ومكتبات الوصفات معًا. جهّزها بتشغيل متصل بالشبكة قبل استخدام
--offline. تخرج الوصفة غير المعروفة بالرمز 1، والاستخدام غير الصحيح للأمر بالرمز 2.
النطاق والقيود
- تأتي ملفات الإدخال من مجموعة مصادر Java الرئيسية. تسهم مصادر Kotlin بمراجع مصرَّفة لكنها لا تُعاد كتابتها، ومجموعات مصادر الاختبار ليست مدخلات لإعادة الكتابة.
- الوصفات التي تقرأ قيم التعليقات التوضيحية على أنواع التبعيات غير مدعومة. كما تخلو معلومات أنواع التبعيات من القيم الافتراضية للتعليقات التوضيحية ومن تعليقات المعاملات والأنواع.
- لا تُضمَّن ملفات JAR الشقيقة في مساحة العمل ولا التبعيات المقدَّمة كمسارات في نظام الملفات في معلومات الأنواع المفهرسة التي يستخدمها المحلّل.
- يتفاوت توافق الوصفات. افحص فروق التشغيل التجريبي وشغّل الاختبارات بعد تطبيق التغييرات.
مشاريع Maven و Gradle و Bazel
تستخدم هذه الأوامر تعريف مشروع في elide.pkl. تختار تكاملات Maven و Gradle و Bazel
المُصرّفات والأدوات الأخرى داخل عمليات البناء تلك، لكنها لا تستورد رسوم تبعياتها إلى elide rewrite
ولا تضيف هدفًا أو مهمة أو قاعدة لإعادة الكتابة.
لاستخدام سير العمل هذا إلى جانب بناء قائم، عرّف مجموعات المصادر والإصدار المستهدف والمستودعات والتبعيات
المناسبة في elide.pkl، أو استخدم اعتماد مشروع قائم. وأبقِ ذلك التعريف متزامنًا
مع البناء الذي تختبر به النتيجة.
لفحص الشيفرة دون تعديل المصادر، راجع فهرس شيفرة التبعيات.