إنتقل إلى المحتوى الرئيسي

تحليل البنية

تعلم كيفية استخدام 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 وحدة
الاقتراح: النظر في نمط الواجهة لتقليل الاقتران

أفضل الممارسات

  1. تشغيل التحليل بانتظام - اكتشاف المشاكل مبكراً
  2. تحديد قواعد البنية - منع الانتهاكات
  3. مراجعة التعقيد - إعادة هيكلة النقاط الساخنة
  4. مراقبة الاتجاهات - تتبع المقاييس عبر الزمن