لماذا تستخدم منسق Scala الخاص بنا
- نسق كود Scala غير منظم أو غير محاذٍ فورًا
- أصلح المسافات حول الأنواع والمعاملات والعوامل
- وحد نمط الأقواس للفئات والكائنات والسمات والطرق
- طبق لف الأسطر بنمط scalafmt للتعبيرات الطووسلاسل الطرق
- يدعم ملفات `.scala` ونصوص `.sc` وملفات بناء `.sbt`
- يتم تنسيق الكود عبر خلفية مؤمنة – غير مشترك أو مفهرس
- واجهة محرر متجاوبة تعمل على اللابتوب، سطح المكتب، واللوحي
🛠️ كيفية تنسيق كود Scala عبر الإنترنت for scala-formatter
1. الصق أو حمّل كود Scala الخاص بك
📥 الصق كود Scala في المحرر أو اسحب وأفلت ملف `.scala` أو `.sc` أو `.sbt`. يطبق المحرر تلوين بناء جملة Scala لتتمكن من مسح كودك بسرعة.
2. انقر على "تنسيق"
⚙️ اضغط على زر **تنسيق**. يُرسل كودك عبر HTTPS إلى مُنسّق بنمط scalafmt يعيد تنظيم المسافات البيضاء، المسافات البادئة، وفواصل الأسطر دون تغيير الدلالات.
3. راجع النتيجة
🔍 قارن النسخة المنظّمة بالأصلية. يتم توحيد الأقواس، المسافات، والخطوط الفارغة بحيث يصبح هيكل كودك أسهل للمتابعة.
4. انسخ أو حمّل
📤 انسخ كود Scala المنسّق مرة أخرى إلى بيئة التطوير المتكاملة، أو حمّله كملف `.scala` جاهز للالتزام، مراجعة الكود، أو النشر.
المواصفات الفنية
سلوك التنسيق (بنمط Scalafmt)
يهدف المُنسّق إلى محاكاة اتفاقيات scalafmt الشائعة بحيث يبدو كودك مألوفًا في مشاريع Scala الحديثة.
| الجانب | السلوك | ملاحظات |
|---|---|---|
| المسافات البادئة والأقواس | مسافات بادئة متسقة لـ `class`، `object`، `trait`، `def`، `if`، `match`، و `for` | يجعل تدفق التحكم المتداخل ومطابقة الأنماط أسهل للقراءة. |
| مسافات الأنواع والمعاملات | يوحّد المسافات حول النقطتين، الأسهم وقوائم المعاملات | على سبيل المثال: `def f(x: Int): String` بدلاً من `def f(x:Int):String`. |
| الاستيراد والحزم | يحافظ على هيكلة كتل الحزم والاستيراد وفصلها عن التعريفات | يحسّن التناسق والتنقل بين الملفات. |
| الخطوط الفارغة | يوحّد الخطوط الفارغة حول التعريفات عالية المستوى | يفصل الأقسام المنطقية مثل النماذج، الخدمات، والمساعدات. |
| عدم التغيير بالتكرار | تشغيل التنسيق عدة مرات يعطي نفس النتيجة | آمن لإعادة التنسيق بقدر ما تريد دون انحراف في النمط. |
توافق إصدار سكالا
تم تصميم المُنسق لكل من تركيب سكالا 2 وسكالا 3.
| الميزة | الدعم | ملاحظات |
|---|---|---|
| سكالا 2.x | ✅ نعم | يعمل مع الأنماط الشائعة مثل الضمنيات، والكائنات المرافقة، وفهم الحلقات الكلاسيكي. |
| سكالا 3 (دوتي) | ✅ نعم | يفهم given/using، وطرق الامتداد، والتعدادات، وتركيبات سكالا 3 الأخرى. |
| ملفات بناء SBT | ✅ نعم | يُنسق ملفات `.sbt` المستخدمة في البناء وتعريفات التبعيات. |
المدخلات المدعومة والحدود
مُحسَّن لملفات المشاريع الواقعية، وليس فقط المقاطع الصغيرة.
| المعامل | الحد / السلوك | ملاحظات |
|---|---|---|
| امتدادات الملفات | .scala, .sc, .sbt | ملفات المصدر، والنصوص البرمجية، وتعريفات البناء. |
| أنواع MIME | text/x-scala | مستخدم داخليًا لتلوين التركيب. |
| الحد الأقصى لحجم الإدخال | ≈ 2 ميجابايت من الكود المصدري | الكود المُنشأ كبير الحجم يُنسق بشكل أفضل عبر scalafmt محلي. |
| الترميز | يُوصى بـ UTF-8 | يجب تحويل المحتوى غير UTF-8 قبل التنسيق. |
التنفيذ والسلامة
يتم إجراء التنسيق عبر خلفية خاصة ومؤمنة بدلاً من الخدمات العامة من طرف ثالث.
| الجانب | السلوك | ملاحظات |
|---|---|---|
| النقل | مكالمات HTTPS إلى واجهة برمجة تطبيقات تنسيق سكالا | يتم نقل كودك بأمان ولا يتم كشفه للعامة. |
| مهلة | ~25 ثانية لكل طلب | يمنع وظائف التنسيق طويلة الأمد أو العالقة على المدخلات المرضية. |
| الدلالات | تحويلات التخطيط فقط | المُنسق يغير المسافات البيئة والتخطيط، وليس منطق برنامجك. |
استخدم Scalafmt في سير عملك المحلي
للتحكم الكامل والتنسيق على مستوى المستودع، قم بتثبيت scalafmt ودمجه في خطوة البناء أو خط أنابيب التكامل المستمر:
عالمي (عبر sbt)
أضف scalafmt إلى مشروعك
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")يضيف إضافة sbt حتى تتمكن من تشغيل scalafmt من خلال shell sbt.
نسق جميع المصادر
sbt scalafmtAllيُنسق جميع ملفات Scala و sbt في مشروعك باستخدام `.scalafmt.conf`.
تحقق من التنسيق في التكامل المستمر
sbt scalafmtCheckAllيفشل البناء إذا لم تكن الملفات مُنسقة بشكل صحيح.
حالات الاستخدام الشائعة
الخلفية وخدمات البرمجة الوظيفية
حافظ على اتساق قواعد التعليمات البرمجية الخلفية الكبيرة لـ Scala وقواعد البرمجة الوظيفية وسهولة مراجعتها.
- توحيد النمط عبر مشاريع Akka أو ZIO أو Cats Effect أو Play.
- تنظيف التعليمات البرمجية قبل فتح طلبات السحب أو مشاركة الأمثلة.
- تطبيع التنسيق بعد إعادة الهيكلة الكبيرة أو هجرات المكتبات.
object A{def main(args:Array[String]){println("hi")}}
object A {
def main(args: Array[String]): Unit = {
println("hi")
}
}
تعليم وتدريس Scala
ركز على المفاهيم الوظيفية والأنواع بدلاً من حروب المسافات.
- التنسيق التلقائي لتسليمات الطلاب قبل مراجعة المنطق والأنماط.
- عرض أمثلة قبل/بعد التنسيق عند تدريس نمط Scala.
- إعداد مقاطع تعليمات برمجية نظيفة للشرائح والمستندات والمدونات.
نصوص البناء والأدوات
حافظ على نظافة ملفات بناء `.sbt` ونصوص Scala الصغيرة.
- نسق إعدادات sbt وكتل التبعيات لتسهيل الصيانة.
- نظف النصوص المساعدة المستخدمة للهجرات أو الأدوات الداخلية.
❓ Frequently Asked Questions
❓ما هو scalafmt وكيف يرتبط هذا الأداة به؟
🔧هل يمكنني تخصيص جميع قواعد scalafmt هنا؟
🌐هل يدعم تركيب Scala 3؟
🔒هل يتم إرسال كود Scala الخاص بي إلى خادم عام؟
HTTPS إلى خادم تنسيق خاص مخصص لهذا الأداء ولا يتم مشاركته أو فهرسته. للكود شديد السرية أو الملكي، يمكنك تشغيل scalafmt محليًا بدلاً من ذلك.⚙️هل سيغير التنسيق طريقة عمل برنامج Scala الخاص بي؟
Pro Tips
احتفظ بملف `.scalafmt.conf` في مستودعك حتى يستخدم المحرر ونظام التكامل المستمر و`sbt scalafmt` نفس النمط.
قم بتشغيل commit مخصص "للتنسيق فقط" قبل إعادة الهيكلة حتى تركز الاختلافات اللاحقة على تغييرات الكود الحقيقية، وليس المسافات البيضاء.
استخدم عرض سطر أقصى ثابت عبر فريقك لتجنب الاختلافات المزعجة والأنماط المتضاربة.
عند التدريس، اعرض Scala غير المرتب أولاً، ثم النسخة المنسقة لتسليط الضوء على كيفية تحسين التخطيط للقراءة.
Additional Resources
Other Tools
- محسن CSS
- محسن HTML
- محسن Javascript
- محسن PHP
- منتقي الألوان
- مستخرج Sprite
- فك تشفير Base64
- تشفير Base64
- منسق Csharp
- منسق CSV
- Dockerfile Formatter
- منسق Elm
- منسق ENV
- منسق Go
- منسق Graphql
- منسق Hcl
- منسق INI
- منسق JSON
- منسق Latex
- منسق Markdown
- منسق Objectivec
- Php Formatter
- منسق Proto
- منسق Python
- منسق Ruby
- منسق Rust
- منسق سكريبت Shell
- منسق SQL
- منسق SVG
- منسق Swift
- منسق TOML
- Typescript Formatter
- منسق XML
- منسق YAML
- منسق Yarn
- مختصر CSS
- Html Minifier
- Javascript Minifier
- مختصر JSON
- مصغر XML
- عارض رؤوس HTTP
- PDF إلى نص
- مختبر Regex
- مدقق ترتيب SERP
- بحث Whois