تحليل البنية
تعلم كيفية استخدام ArchiCore لفهم وتحسين بنية قاعدة الكود الخاصة بك.
نظرة عامة
يحلل ArchiCore هيكل الكود لتحديد:
- تبعيات الوحدات
- التبعيات الدائرية
- انتهاكات الطبقات
- نقاط التعقيد الساخنة
- أنماط البنية
التصور
رسم التبعيات
تعرض لوحة القيادة الرئيسية رسماً تفاعلياً للتبعيات:
- العقد تمثل الملفات أو الوحدات
- الحواف تمثل الاستيراد/التبعيات
- الألوان تشير إلى أنواع الوحدات أو حالتها الصحية
- الحجم يعكس تعقيد الملف
التنقل
- التكبير بعجلة الماوس
- التحريك بالسحب
- النقر على العقد لعرض التفاصيل
- النقر المزدوج للتركيز على وحدة
قواعد البنية
حدد قواعد لفرض الحدود المعمارية.
إنشاء القواعد
// .archicore/rules.json
{
"rules": [
{
"id": "layer-separation",
"name": "فصل الطبقات",
"type": "import",
"severity": "error",
"config": {
"forbidden": [
{
"from": "controllers/*",
"to": "repositories/*",
"message": "لا يجب أن تصل المتحكمات إلى المستودعات مباشرة"
}
]
}
}
]
}
القواعد المدمجة
| القاعدة | الوصف |
|---|---|
no-circular-deps | يمنع التبعيات الدائرية |
max-complexity | يحد من التعقيد الدوري |
max-file-length | يحد من حجم الملف |
naming-convention | يفرض معايير التسمية |
التحقق من القواعد
> /rules validate
جارٍ التحقق من قواعد البنية...
✓ no-circular-deps: نجح
✗ layer-separation: فشل (2 انتهاك)
- src/controllers/user.ts:5 يستورد src/repositories/user.ts
- src/controllers/product.ts:3 يستورد src/repositories/product.ts
السياقات المحدودة
حدد الحدود المنطقية في تطبيقك:
// .archicore/architecture.json
{
"boundedContexts": [
{
"name": "المصادقة",
"description": "مصادقة المستخدم والجلسات",
"paths": ["src/auth/*", "src/middleware/auth*"]
},
{
"name": "المنتجات",
"description": "إدارة كتالوج المنتجات",
"paths": ["src/products/*", "src/inventory/*"]
}
]
}
المقاييس
مقاييس التعقيد
- التعقيد الدوري - عدد المسارات المستقلة
- التعقيد المعرفي - مدى صعوبة فهم الكود
- مؤشر الصيانة - درجة الصيانة الإجمالية
تحديد النقاط الساخنة
> /metrics --sort complexity
النقاط الساخنة لتعقيد الكود:
1. src/services/order.ts:processOrder()
التعقيد: 25 | الأسطر: 180 | الصيانة: 45
2. src/utils/parser.ts:parseInput()
التعقيد: 18 | الأسطر: 120 | الصيانة: 52
3. src/api/handlers.ts:handleRequest()
التعقيد: 15 | الأسطر: 95 | الصيانة: 58
اقتراحات إعادة الهيكلة
يمكن لـ ArchiCore اقتراح فرص إعادة الهيكلة:
> /refactoring src/services/order.ts
اقتراحات إعادة الهيكلة لـ src/services/order.ts:
1. استخراج الطريقة
processOrder() معقد جداً (25)
الاقتراح: استخراج منطق التحقق إلى validateOrder()
2. تقسيم الملف
الملف يحتوي على 180 سطراً مع مسؤوليات متعددة
الاقتراح: تقسيم إلى OrderProcessor و OrderValidator
3. تقليل التبعيات
الملف يستورد 12 وحدة
الاقتراح: النظر في نمط الواجهة لتقليل الاقتران
أفضل الممارسات
- تشغيل التحليل بانتظام - اكتشاف المشاكل مبكراً
- تحديد قواعد البنية - منع الانتهاكات
- مراجعة التعقيد - إعادة هيكلة النقاط الساخنة
- مراقبة الاتجاهات - تتبع المقاييس عبر الزمن