Polyglotpiranha هي مجموعة أدوات تحويل رمز خفيفة الوزن لأتمتة التغييرات على نطاق واسع. في Uber ، يتم استخدامه في الغالب لتنظيف أعلام الميزات التي لا معنى لها.
نحن ندعم فقط اللغات المستخدمة في Uber. من المحتمل ألا نتمكن من إضافة لغات جديدة في هذا الريبو. هناك عدد من الشوكات (انظر https://github.com/uber/piranha/forks للحصول على قائمة كاملة) قد توفر ميزات إضافية.
لتثبيت piranha Polyglot ، يمكنك استخدامه كمكتبة Python أو كأداة سطر الأوامر.
لتثبيت Python API ، قم بتشغيل الأمر التالي:
pip install polyglot-piranha
لتثبيت واجهة سطر الأوامر ، اتبع هذه الخطوات:
git clone https://github.com/uber/piranha.git
cd piranha
cargo build --release
(أو cargo build --release --no-default-features
لـ MacOS)target/release
from polyglot_piranha import execute_piranha , PiranhaArguments , Rule , RuleGraph , OutgoingEdges
# Original code snippet
code = """
if (obj.isLocEnabled() || x > 0) {
// do something
} else {
// do something else!
}
"""
# Define the rule to replace the method call
r1 = Rule (
name = "replace_method" ,
query = "cs :[x].isLocEnabled()" , # cs indicates we are using concrete syntax
replace_node = "*" ,
replace = "true" ,
is_seed_rule = True
)
# Define the edges for the rule graph.
# In this case, boolean_literal_cleanup is already defined for java [see src/cleanup_rules]
edge = OutgoingEdges ( "replace_method" , to = [ "boolean_literal_cleanup" ], scope = "parent" )
# Create Piranha arguments
piranha_arguments = PiranhaArguments (
code_snippet = code ,
language = "java" ,
rule_graph = RuleGraph ( rules = [ r1 ], edges = [ edge ])
)
# Execute Piranha and print the transformed code
piranha_summary = execute_piranha ( piranha_arguments )
print ( piranha_summary [ 0 ]. content )
لمزيد من الأمثلة والتفسيرات لمجموعة الأدوات ، يرجى التحقق من العروض التجريبية الخاصة بنا وملف polyglot_readme.md الموسع.
تُستخدم أعلام الميزات بشكل شائع لتمكين التشغيل التدريجي أو تجربة ميزات جديدة. في حالات قليلة ، حتى بعد تحقيق الغرض من العلم ، لم تتم إزالة الكود المتعلق بعلم الميزة. نشير إلى أعلام مثل الأعلام التي لا معنى لها. يمكن أن يكون لوجود الكود المتعلق بالأعلام التي لا معنى لها العيوب التالية:
Polyglotpiranha هي أداة يمكنها تلقائيًا إعادة تشكيل رمز المرتبطة بالأعلام التي لا معنى لها. على مستوى أعلى ، فإن إدخال الأداة هو اسم العلم والسلوك المتوقع ، بعد تحديد قائمة واجهات برمجة التطبيقات المتعلقة بالأعلام في ملف الخصائص. ستستخدم Piranha هذه المدخلات لإعادة تلقائيًا الرمز وفقًا للسلوك المتوقع.
Polyglotpiranha (اعتبارًا من مايو 2022) هي أداة إعادة بيع شائعة لدعم لغات متعددة وميزات واجهات برمجة تطبيقات العلم. للتطبيقات القديمة الخاصة باللغة ، يرجى التحقق من العلامة التالية.
بعض الروابط الإضافية على Piranha:
إذا كان لديك أي أسئلة حول كيفية استخدام Piranha أو العثور على أي أخطاء ، فيرجى فتح مشكلة GitHub.
Piranha مرخصة بموجب ترخيص Apache 2.0. انظر ملف الترخيص لمزيد من المعلومات.
هذا ليس منتجًا رسميًا أوبر ، وقد تم توفيره كما هو.