ForHosting KIT · أدوات المطورين

حاسبة التعقيد السيكلومتري

تحسب واجهة برمجة التطبيقات للتعقيد السيكلومتري مقياس مكابي من بنية مخطط تدفق التحكم: تقدّم عدد الحواف وعدد العقد وعدد المكونات المتصلة، فتعيد التعقيد السيكلومتري M = E − N + 2P، أي الحد الأدنى من عدد المسارات المستقلة خطيًا عبر الشيفرة، وحدًّا أدنى لعدد حالات الاختبار اللازمة لتغطية كاملة للفروع.

● Betaمجاني · داخل متصفحك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا

لا يوجد كود مصدري لرفعه ولا محلل لإعداده — ثلاثة أعداد فقط من المخطط الموجود لديك بالفعل، ورقم واحد حتمي ودقيق في المقابل، يُحسب بالطريقة نفسها في متصفحك وعلى شبكتنا الطرفية العالمية في كل مرة.

ماذا يقيس التعقيد السيكلومتري

يقيس التعقيد السيكلومتري، الذي قدّمه توماس مكابي عام 1976، عدد المسارات المستقلة خطيًا عبر مخطط تدفق التحكم في البرنامج. فكل نقطة قرار — جملة if أو حلقة while أو فرع case أو تعبير شرطي — تضيف مسارًا واحدًا، لذا يعكس المقياس مدى صعوبة اختبار جزء من الشيفرة والاستدلال عليه. والقيمة 1 تعني شيفرة خطية بلا أي تفريع، أما القيمة 10 فهي الحد المشار إليه على نطاق واسع الذي يبدأ عنده تقسيم الوحدة. الرقم خاصية من خصائص المخطط لا من خصائص اللغة: فبمجرد رسم مخطط تدفق التحكم لدالة ما، يصبح تعقيدها ثابتًا، وتقيّمه حاسبة التعقيد السيكلومتري هذه مباشرةً من الأعداد الثلاثة للمخطط. ولأن المدخلات مجرد حواف وعقد ومكونات، فهي تعمل مع الشيفرة الزائفة والمخططات الانسيابية والمخططات المصدّرة من أي أداة تحليل ساكن، دون الحاجة إلى مشاركة الكود المصدري نفسه.

الصيغة M = E − N + 2P

يُحسب المقياس بالصيغة M = E − N + 2P، حيث E عدد حواف مخطط تدفق التحكم، وN عدد العقد، وP عدد المكونات المتصلة. وبالنسبة لبرنامج أو دالة واحدة يكون المخطط مكونًا متصلًا واحدًا، فتصبح P = 1 وتختزل الصيغة إلى M = E − N + 2. وعند تحليل عدة دوال غير متصلة معًا — مثل مخططات الاستدعاء لثلاث وحدات منفصلة مرسومة في رسم واحد — يحصي P كل جزء غير متصل، ويحافظ الحد +2P على اتساق النتيجة مع مجموع تعقيدات الأجزاء. كما يعيد المسار الحقل decision_points المعرف بأنه M − 1، وهو يساوي عدد المحمولات في برنامج مهيكل قِيس مخططه. يجب أن تكون المدخلات الثلاثة أعدادًا صحيحة موجبة؛ إذ يرفض الاستدعاء الكسور والصفر والأعداد السالبة والقيم غير الرقمية، لأن مثل هذه الأعداد لا يمكن أن تصف مخطط تدفق تحكم حقيقيًا، وقبولها بصمت سيخفي خطأ قياس في المراحل السابقة.

كيفية استخدام الرقم عمليًا

يحدد التعقيد الحد الأدنى لعدد حالات الاختبار اللازمة لتمرير كل مسار مستقل، لذا تستخدمه الفرق حدًّا أدنى للتغطية عند تخطيط الاختبارات: فالدالة التي فيها M = 7 لا يمكن اختبار فروعها بالكامل بثلاثة اختبارات مهما اختيرت بذكاء. ويغذي أيضًا سياسة مراجعة الشيفرة — فكثير من المؤسسات تعلّم أي دالة يتجاوز تعقيدها حدًّا متفقًا عليه — ومتابعة الدين التقني، حيث يُراقب مجموع التعقيد أو أقصاه عبر قاعدة الشيفرة إصدارًا بعد إصدار. هذه الواجهة هي الخطوة الحسابية في سير العمل ذاك: احسب الحواف والعقد والمكونات من المحلل أو الرسم لديك، وأرسلها، وستحصل على القيمة نفسها في كل مرة، لأن الحساب حتمي تمامًا بلا تقريب ولا استدلالات تقريبية. ويعمل على شبكتنا الطرفية العالمية مقابل $0.002 لكل طلب، ويعمل الكود نفسه مجانًا في متصفحك على هذه الصفحة، بحيث تتحقق من رقم يدويًا وتدفع فقط عندما تؤتمت الفحص في خط أنابيب.

تحديد حد أدنى لتغطية الاختبارات

حوّل أعداد المخطط من محللك الساكن إلى الحد الأدنى لحالات الاختبار اللازمة لتغطية كل مسار مستقل في دالة.

فرض ميزانية تعقيد في التكامل المستمر

أفشل البناء عندما يتجاوز التعقيد السيكلومتري لوحدة ما العتبة المتفق عليها في الفريق، محسوبًا من الحواف والعقد والمكونات.

مراجعة إجابات الواجبات والامتحانات

تحقق من نتيجة تمرين في هندسة البرمجيات يطلب رقم مكابي من مخطط انسيابي، مع عرض الصيغة في الاستجابة.

كم التكلفة؟

$0.002 لكل طلب. وهي مجانية أيضًا في متصفحك على هذه الصفحة — الكود نفسه يحسب كليهما.

ما الصيغة المستخدمة؟

صيغة مكابي الأصلية M = E − N + 2P، حيث E الحواف وN العقد وP المكونات المتصلة. وبالنسبة لبرنامج واحد P = 1، أي E − N + 2.

لماذا تُرفض مدخلاتي؟

يجب أن تكون الحواف والعقد والمكونات أعدادًا صحيحة موجبة. فالصفر والأعداد السالبة والكسور والقيم غير الرقمية لا يمكن أن تصف مخطط تدفق تحكم حقيقيًا، وتُرفض بوصفها مدخلات غير صالحة.

ما حقل decision_points؟

هو M − 1: عدد عقد المحمولات (القرار) في برنامج مهيكل مخططه لهذا التعقيد. وهو تيسير للفرق التي تعد جمل if والحلقات بدلًا من الحواف.

هل أحتاج إلى إرسال كود مصدري؟

لا. المدخلات ثلاثة أعداد من مخطط تدفق التحكم، لذا لا يغادر الكود المملوك محللك أبدًا — فلا تنتقل سوى مجاميع الحواف والعقد والمكونات.

هل النتيجة حتمية؟

نعم. إنها حسابات صحيحة دقيقة بلا تقريب ولا عشوائية ولا استدعاءات خارجية: الأعداد الثلاثة نفسها تعيد دائمًا التعقيد نفسه.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/math/cyclomatic-complexity

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/math/cyclomatic-complexity \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"edges":9,"nodes":8,"components":1}'
{
  "edges": 9,
  "nodes": 8,
  "components": 1
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.cyclomatic_complexity",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

اطّلع على توثيق KIT الكامل ←