يطبق موجات الطفرات التي توفرها أدوات أخرى ، مثل المبيدات أو الترميز.
هناك العديد من المبيدات الموجودة هناك ، ويشمل معظمها طرقًا ل --fix الفشل تلقائيًا. هذا رائع ولكن من الصعب القيام به لعدة أسباب:
تقترح automutate أن المبيدات تقترح فقط كيفية إصلاح القواعد ، من خلال تنسيق JSON موحد.
إن وجود مشروع موحد للمصدر الغامض لتطبيق الطفرات يجلب بعض الفوائد:
automutate باستخدام رمز مشترك.بشكل عام ، يعد اكتشاف فشل القاعدة مصدر قلق منفصل عن إصلاحها . تحتاج المبيدات إلى التشغيل بسرعة عبر مجموعة من الملفات للقراءة فقط ، غالبًا أثناء العمليات المصممة ، في حين تعمل المثبتات ببطء وتعديل الملفات بناءً على طلب المستخدم.
بدأت خوارزمية automutate الرئيسية في autoMutator.ts وتطبيقها في الغالب في mutationsApplier.ts :
while mutationsWave = getMutationsWave ( ) :
for ( file , fileMutations ) of groupMutationsByFile ( mutationsWave ) :
for mutation of getNonOverlappingMutationsInReverse ( fileMutations ) :
applyMutation ( file , mutation )getMutationsWave إلى أداة خارجية ، مثل Linter ، لتلقي موجة من الطفرات المقترحة.groupMutationsByFile تنظم الطفرات المقترحة حسب الملف.getNonOverlappingMutationsInReverse الطفرات المتداخلة التي من شأنها أن تتعارض مع بعضها البعض ، وفرز الباقي بترتيب عكسي بحيث لا تتداخل الطفرات اللاحقة مع مواقف شخصية الطفرات السابقة.applyMutation يعدل الملفات على القرص باستخدام الطفرات المتبقية. تحتوي طفرة واحدة على معرف فريد type ، ومجموعة من موضع (موضع) الحرف لتطبيقها ، ومنطق آخر اختياريًا.
يتم توفير معالجة النص الأساسية التالية خارج الصندوق:
multiple - حاوية لطفرات متعددة. يشير هذا إلى automutate أنه يجب تطبيقها على الفور أو لا على الإطلاق ، مما يضمن الاتساق مع اكتشاف تداخل الطفرة المدمج.text-delete - حذف مجموعة من الأحرف.text-insert - إدراج سلسلة عند نقطة واحدة.text-replace - يحل محل الأحرف المطابقة لسلسلة أو تعبير منتظم داخل نطاق.text-swap - تبادل مجموعة من الأحرف مع سلسلة جديدة.على سبيل المثال:
{
"ugly-file.txt" : [
{
"range" : {
"begin" : 7 ,
"end" : 14
},
"type" : " text-delete "
},
{
"insertion" : " inconceivable! " ,
"range" : {
"begin" : 21
},
"type" : " text-insert "
}
]
} قد تحدد الأدوات المساعدة الخاصة بـ Linter طفراتها الخاصة. على سبيل المثال ، قد يحدد عمود اللغة طفرة node-rename بدلاً من استخدام طفرة multiple تحتوي على طفرات text-swap .
انظر الطبعات لمعرفة المزيد عن المسخات المخصصة.
انظر على متن الطائرة.
يتطلب automutate nodejs> = 14.