نظرة عامة والمفاهيم الأساسية
ماذا تفعل CleanLens، والمشكلة التي تحلها، والمصطلحات المستخدمة في كل الملفات الأخرى
ما هي CleanLens
CleanLens أداة محلية لتحليل Clean Code تفهم سجل Git. تعمل بشكلين يشتركان في محرّك واحد:
- إضافة VS Code (شريط جانبي، ولوحة معلومات webview، وتنبيهات داخل المحرر)، و
- أداة سطر الأوامر
cleanlens(تقرير نصي أو Markdown أو JSON، وبوابة جودة في الـ CI).
تحلل ملفات JavaScript / TypeScript (.js .jsx .mjs .cjs .ts .tsx) وPython (.py) وفق 14 قاعدة قابلة للضبط، ثم تحدد أي مطوّر أدخل كل مشكلة، وتعطي كل مطوّر Clean Code Score من 0 إلى 100.
كل شيء يعمل على جهازك. لا ترسل أي طلبات عبر الشبكة، ولا تجمع أي بيانات استخدام، ولا تحتاج تسجيل دخول (انظر PRIVACY.md).
المشكلة التي تحلها
معظم أدوات "من كتب الكود السيئ" تستخدم git blame على الملفات الحالية. وهذا غير عادل: إذا عدّلت سارة سطراً واحداً في ملف قديم من 2,000 سطر، يجعلها blame آخر من كتب في هذا الملف، وأداة تعمل على مستوى الملف تحمّلها مشاكل الملف القديمة كلها.
أما CleanLens فتعيد تشغيل سجل الـ commits. لكل commit تحلل كل ملف تغيّر قبل الـ commit وبعده، وتقارن مجموعتي المخالفات:
- مخالفة تظهر بعد الـ commit فقط، على أسطر غيّرها الـ commit ← أدخلها كاتب هذا الـ commit؛
- مخالفة موجودة قبله وبعده ← موجودة سابقاً، ولا تُحسب على أحد؛
- مخالفة موجودة قبله واختفت بعده ← أُصلحت، وتُحسب لصالح الكاتب.
بعد ذلك تُبنى الدرجات على عدد المشاكل التي أدخلها المطوّر لكل 1,000 سطر كتبها، وليس على الأعداد الخام. وهناك تصحيح إحصائي (التقليص البايزي) يمنع العيّنة الصغيرة من إنتاج درجة متطرفة.
مبادئ التصميم
- العدالة قبل السهولة. لا يُحمَّل المطوّر مخالفة إلا بدليل (ثقة عالية أو متوسطة). أي شيء غير مؤكد يُعرض ولا يدخل في الدرجة.
- الجودة منفصلة عن الحجم. "نسبة المساهمة" (كم كتبت من الكود) تظهر دائماً بجانب الدرجة، ولا تُخلط بها أبداً.
- محلية وخاصة. فقط عمليات
gitوقراءة الملفات. لا خوادم. - قابلة للضبط. القواعد، ودرجات الخطورة، والحدود، والاستثناءات، وثوابت التقييم، والهويات، وعمق السجل، كلها قابلة للضبط (انظر 10 — مرجع الإعدادات و11 — دليل الضبط والتخصيص).
- محرّك واحد وواجهتان. الإضافة وأداة سطر الأوامر تستدعيان نفس الدالة
analyzeRepository()، لذلك أرقامهما متطابقة دائماً.
المصطلحات
هذه المصطلحات مستخدمة في كل الملفات وفي واجهة الأداة.
| المصطلح | المعنى |
|---|---|
| قاعدة (Rule) | أحد الفحوصات الأربعة عشر، مثل maxFunctionLines. تُضبط بـ enabled وseverity، واختيارياً limit / options. |
نتيجة فحص (RawFinding) | ما يعيده المحلل: معرّف القاعدة، والملف، ومدى الأسطر، والرسالة، واسم الرمز اختيارياً. |
| مخالفة (Violation) | نتيجة فحص مضاف إليها الخطورة والفئة والوزن ومعرّف ثابت. |
| الخطورة (Severity) | low وmedium وhigh وcritical. تحدد وزن المخالفة (1 / 3 / 5 / 8 افتراضياً). |
| الفئة (Category) | كل قاعدة تنتمي إلى إحدى ثلاث فئات تقييم: duplication (التكرار) وstructure (البنية) وhygiene (النظافة). |
| النقاط الموزونة | مجموع أوزان الخطورة لمجموعة من المخالفات. |
| KLOC | 1,000 سطر من الكود. الكثافات تُقاس بـ "نقاط موزونة لكل KLOC". |
| الأسطر المحللة | الأسطر التي أضافها المطوّر أو عدّلها، في الملفات القابلة للتحليل، عبر الـ commits المحللة. |
| البصمة (Fingerprint) | قيمة hash مبنية على القاعدة + المسار + الرمز + سياق الكود بعد تطبيعه. تتعرف على "نفس المخالفة" في نسختين من الملف حتى لو تغيّر رقم سطرها. |
| حالة النسب | introduced وexisting وfixed وexcluded وunattributed. انظر 07. |
| ثقة النسب | high وmedium وlow: مدى تأكد المحرّك من أن الكاتب هو من سبّب المخالفة. فقط high وmedium تؤثران في الدرجات. |
| مستوى ثقة الدرجة | insufficient وprovisional وreliable وhighly_reliable: حجم الكود الذي بُنيت عليه الدرجة. |
| قابل للترتيب (Rankable) | هل لدى المطوّر أسطر محللة كافية (افتراضياً 1,000 أو أكثر) ليظهر في الترتيب. |
| صافي الأثر على الجودة | النقاط الموزونة التي أدخلها ناقص النقاط الموزونة التي أصلحها. للعرض فقط. |
| فحص HEAD | تحليل الملفات الحالية في مجلد العمل. ينتج قائمة المخالفات. |
| مرور الـ commits | إعادة تشغيل أحدث N من الـ commits غير الدمجية. ينتج النسب والدرجات. |
| إعداد مسبق (Preset) | إعداد قواعد جاهز للبدء: javascript وreact وpython وdjango. |
ماذا تحصل عليه من كل تشغيل
- إجماليات المشروع: عدد المطورين، والمخالفات، والمخالفات غير المنسوبة، والملفات المحللة، والـ commits المحللة، ووقت التحليل.
- لكل مطوّر: Clean Code Score ودرجاتها الفرعية الثلاث، والأسطر المحللة، وثقة الدرجة، ونسبة المساهمة، وأعداد المخالفات الجديدة / المُصلحة / الموجودة سابقاً / غير المنسوبة، والنقاط الموزونة، وصافي الأثر على الجودة، والكثافة لكل KLOC، وأيام النشاط، وأول وآخر مساهمة، والبريد الإلكتروني.
- لكل مخالفة: الخطورة، والقاعدة، والرسالة، والملف ومدى الأسطر، والحالة، والثقة، والمطوّر الذي أدخلها، والـ commit والتاريخ.
إلى أين بعد ذلك
- لتشغيلها الآن: 02 — البدء.
- لفهم ما يجري من الداخل: 03 — البنية المعمارية.
- لضبطها: 11 — دليل الضبط والتخصيص.