تاريخ Git · نسبة عادلة · كود نظيف

تحليل Clean Code عادل
لكل مطوّر في مستودع Git

CleanLens يعيد تشغيل تاريخ Git ويقارن كل ملف قبل كل commit وبعده، فتُنسب كل مخالفة Clean Code إلى المطوّر الذي أدخلها فعلاً. ثم يعطي كل مطوّر درجة جودة عادلة لا تتأثر بحجم ما كتبه.

يعمل على جهازك بالكاملبلا تسجيل دخولJS · TS · React · Python
VS Code · Quick Open
>ext install cleanlens.cleanlens
CleanLens
cleanlens.cleanlens · v0.2.4
LintersSCM ProvidersVisualization
تثبيت من Marketplace

أو داخل VS Code: اضغط Ctrl/⌘ + P والصق الأمر.

مشكلة الـ Vibe Coding

الـ Vibe Coding يكتب بسرعة…
ويترك كوارث خلفه

مساعدات الذكاء الاصطناعي تولّد مئات الأسطر في دقائق، ونادراً ما يُراجَع كل سطر. فتتسرّب مفاتيح API إلى Git، وتُبتلع الأخطاء في catch فارغ، وتتضخّم الدوال وتتكرر. CleanLens يفحص كل سطر، ويخبرك بالملف والسطر بالضبط، وبنقرة واحدة تصل إليه.

  1. 1

    يكشف المشاكل الحساسة

    مفاتيح وكلمات مرور مكتوبة في الكود، أخطاء مبتلعة، وعمليات بلا معالجة أخطاء.

  2. 2

    ويفحص Clean Code

    دوال طويلة ومعقّدة، تكرار، كود غير مستخدم، وأسماء غامضة.

  3. 3

    ثم يدلّك على السطر

    كل مخالفة مع الملف ورقم السطر ومستوى الخطورة، وبنقرة يُفتح الملف على السطر نفسه.

المخالفات المكتشفة4

هذه بعض الأمثلة فقط مما يمكن لـ CleanLens اكتشافه.

انقر على أي مخالفة للانتقال إلى سطرها

src/config.jsLn 12
1import { S3Client } from "@aws-sdk/client-s3";
2
3export const config = {
4 region: "eu-central-1",
5 retries: 3,
6 timeoutMs: 8000,
7};
8
9// generated: connect to storage
10export const s3 = new S3Client({
11 region: config.region,
12 credentials: { accessKeyId: "AKIAIOSFODNN7EXAMPLE",
13 secretAccessKey: "wJalrXUtnFEMI/K7MDENG" },
14});
forbidHardcodedSecrets · مفتاح AWS مكتوب مباشرة في الكود
المشكلة

تعديل حرف واحد لا يجعلك مسؤولاً عن ملف كامل

أدوات مثل git blame والـ linters العادية تنسب المشاكل لآخر من عدّل السطر أو الملف. النتيجة تقارير ظالمة: من يصلح خطأً إملائياً في ملف قديم يرث كل مشاكله، ومن كتبها يختفي من الصورة.

src/orders.jscommit a41f9c · Layla
1import { db } from './lib'
2export async function handle(req, a, b, c, d, e, f) {maxParameters
3 const data1 = await db.query(req.q)clearNames
4 try { save(data1) } catch (err) {}emptyCatch
5 console.log('debug', data1)debugStatement
6 // ...
7 return formatTotal(data1) // was: fromatTotalchanged
8}
git blame / last-touch
4 مخالفات

تُحسب على ليلى، رغم أنها صحّحت خطأً إملائياً في السطر 7 فقط.

CleanLens
0 جديدة

المخالفات الأربع كانت موجودة قبل الـ commit، فتُصنّف existing ولا تُحسب على أحد. السطر 7 نظيف.

التعديلات على المسافات فقط تُتجاهل، والكود المنقول بين الملفات يُتتبّع.
introduced أدخلها هذا الـ commit، تُحسب على صاحبهfixed أزالها، تُحسب لهexisting موجودة سابقاً، لا تُحسبexcluded ملفات مستثناةunattributed غير منسوبة
مراحل التحليل

خمس مراحل من الـ commit إلى الدرجة

تابع التمرير. العدسة في الخلفية تمشي على تاريخ الـ commits كما يفعل التحليل.

01

فحص Git وتحميل القواعد

يتأكد أن المجلد مستودع Git فيه commits، ثم يقرأ .clean-code-tracker.json أو يستخدم إعداداً جاهزاً للمشروع.

02

المسح

14 قاعدة Clean Code على JS/TS/JSX/TSX عبر شجرة الـ AST، وعلى Python بطريقة تقريبية، مع كشف الكود المكرر.

03

إعادة تشغيل التاريخ

يمشي على آخر 500 commit (قابلة للتغيير). لكل ملف تغيّر يأخذ diff -w -M -C ويحلل النسخة قبل الـ commit وبعده.

04

التصنيف والنسب

بصمة ثابتة لكل مخالفة (rule + path + symbol + context) تتعرف عليها حتى لو تغيّر رقم سطرها. تُحسب على الكاتب فقط إن ظهرت في أسطر غيّرها أو دالة عدّلها.

05

التقييم والتخزين

درجة لكل مطوّر في ثلاث فئات. النتائج تُخزّن لكل commit، فالتشغيل التالي لا يحلل إلا الـ commits الجديدة.

تقييم عادل

الجودة شيء، وحجم المساهمة شيء آخر

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

score = 100 · e−adjustedDensity / scale
البنية
45%
التكرار
30%
النظافة
25%
  • Bayesian shrinkage: من كتب كوداً قليلاً تُقرَّب درجته من متوسط المشروع، فلا تبدو عينة صغيرة مثالية أو كارثية.
  • حد الترتيب: أقل من 1000 سطر محلَّل؟ يظهر المطوّر لكن لا يدخل الترتيب.
  • لا كود = لا درجة: من لم يُحلَّل له كود يظهر بـ «—» وليس 100.
  • كل الأوزان قابلة للتعديل من ملف الإعداد أو من إعدادات VS Code.

بطاقة مطوّر

مثال من التوثيق
73
التكرار 88البنية 72النظافة 78الثقة: موثوقة
مخالفات جديدة39
مخالفات أصلحها12
موجودة سابقاً51
أسطر محلَّلة3,140
المساهمة42%
الكثافة / KLOC37.58
14 قاعدة

14 قاعدة، كل واحدة بيدك

شغّلها أو أوقفها، وغيّر شدتها (low / medium / high / critical) وحدودها. ملف مشترك للفريق في المستودع، وملف محلي لتفضيلاتك الشخصية.

maxFunctionLines

طول الدالة

دالة أطول من الحد.

40 سطراً
maxFileLines

طول الملف

ملف أطول من الحد.

400 سطر
maxParameters

عدد المعاملات

دالة تأخذ معاملات كثيرة.

5
maxComplexity

التعقيد

Cyclomatic complexity فوق الحد.

10
maxNestingDepth

عمق التداخل

شروط وحلقات متداخلة بعمق.

4
detectDuplicateCode

الكود المكرر

كتلة متطابقة تتكرر في المشروع.

6 أسطر
detectUnusedCode

كود غير مستخدم

import أو متغير أو دالة لا تُستخدم.

requireClearVariableNames

أسماء واضحة

أسماء مبهمة مثل data1 أو x.

requireErrorHandling

معالجة الأخطاء

عملية قد تفشل بلا try.

forbidEmptyCatchBlocks

catch فارغ

كتلة catch أو except فارغة.

forbidHardcodedSecrets

أسرار في الكود

مفتاح API أو كلمة مرور مكتوبة مباشرة.

forbidDebugStatements

أوامر التصحيح

console.log وdebugger وprint.

requireSingleResponsibility

مسؤولية واحدة

كلاس بدوال كثيرة، أو دالة طويلة ومعقدة معاً.

10 دوال
requireDocumentationForComplexCode

توثيق الكود المعقد

دالة معقدة بلا JSDoc أو docstring.

تعقيد ≥ 15
إعدادات جاهزة: JavaScriptReactPythonDjangoيستثني تلقائياً node_modules · dist · build · lock files
ابدأ الآن

من التثبيت إلى أول تقرير في دقيقتين

واجهتان فوق محرك تحليل واحد: إضافة VS Code للعمل اليومي، وأداة سطر أوامر للفريق والـ CI.

أربع خطوات

  1. ثبّت الإضافة

    من Marketplace، ثم افتح مجلداً فيه مستودع Git.

  2. CleanLens: Initialize Project

    من لوحة الأوامر Ctrl/⌘ + Shift + P. يكتشف نوع المشروع ويقترح إعداداً جاهزاً، ثم يكتب ملف القواعد بعد موافقتك.

  3. CleanLens: Run Analysis

    يشغّل التحليل كاملاً ويفتح لوحة التحكم تلقائياً.

  4. اضغط أي مخالفة

    تفتح الملف على السطر نفسه. وأعد فتح اللوحة متى شئت بـ Open Dashboard.

تنبيهات أثناء الكتابة

المخالفات تظهر في المحرر مثل أي linter، دون انتظار تحليل كامل. خط متموّج، وتلميح عند المرور، ومدخل في لوحة Problems.

function handleRequest(req, res) {
  // 63 lines ...
}
Long function: Function handleRequest has 63 lines (limit 40).
CleanLens: Configure Rulesيفتح ملف القواعد، ويعرض إنشاءه إن لم يكن موجوداً.
صُمّم لـ

لمن صُمّم CleanLens

قادة الفرق ومديرو الهندسة

صورة عادلة مبنية على بيانات: من يرفع جودة الكود، ومن يضيف مشاكل جديدة، ومن يصلح القديم.

فرق JS/TS وPython

مراجعة جودة الكود باستمرار، دون أن يتحمّل أحد إرثاً لم يكتبه.

DevOps وCI

بوابة جودة في الـ pipeline أو قبل الـ commit، بمخرجات JSON وأكواد خروج واضحة.

المطوّرون الأفراد

ملاحظات فورية في المحرر أثناء الكتابة، قبل أن تصل المشكلة إلى الـ commit.

الشركات الحريصة على الخصوصية

لا كود يخرج من الجهاز ولا خدمة سحابية، فيناسب المشاريع الحساسة والمغلقة.

محلي 100%

كودك لا يغادر جهازك

كل التحليل يحدث محلياً. لا يُرسل أي كود أو بيانات عن المطوّرين إلى أي مكان، ولا يحتاج حساباً أو تسجيل دخول.

بلا سحابةبلا تسجيل دخولتخزين مؤقت محلي لكل commitتوثيق بالعربية والإنجليزية
من المفيد معرفته

ما يجب أن يعرفه فريقك

نذكر حدود الأداة بوضوح، لأن العدالة تبدأ من الشفافية.

مؤشر، وليس حكماً

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

JS/TS وPython فقط

الملفات بلغات أخرى تُعدّ غير محلَّلة.

نافذة الـ commits

المخالفات الأقدم من النافذة تظهر existing ولا تُحسب. وسّعها بـ --full-history.

التكرار بين الملفات

يُكشف على آخر نسخة (HEAD) فقط. داخل كل commit يُقاس التكرار داخل الملف.

القادم في CleanLens

ما نعمل عليه الآن

CleanLens يتطوّر باستمرار. هذه الميزات التي نبنيها للإصدارات القادمة، وتصلك تلقائياً عبر تحديثات VS Code فور صدورها.

قيد التطوير

اختبار الضغط والتحمّل لموقعك

شغّل اختبار ضغط على موقعك أو الـ API، واعرف كم مستخدماً متزامناً يتحمّل قبل أن يبطؤ أو يتعطّل، وأين تبدأ نقطة الانهيار.

  • محاكاة آلاف المستخدمين المتزامنين
  • زمن الاستجابة ونسبة الأخطاء عند كل مستوى ضغط
  • تقرير واضح بالحدّ الأقصى الآمن
00.5k1k1.5k2k01s2s
زمن الاستجابةالحدّ الآمن ≈ 1,200 مستخدم متزامنمثال توضيحي
قيد التطوير

إعداد مخصّص لكل مشروع

قواعد وحدود تتكيّف مع نوع مشروعك: واجهة React، أو API على Node، أو خدمة Python، أو مكتبة، مع إمكانية تعديل كل شيء حسب حاجة فريقك.

مخطّط له

فحوصات أمان أعمق

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

مخطّط له

إصلاح بنقرة واحدة

اقتراحات إصلاح تلقائية لأشهر المخالفات مباشرة من المحرّر، كحذف console.log أو معالجة catch فارغ.

مخطّط له

مراجعة تلقائية لطلبات الدمج

تعليقات CleanLens على كل Pull Request في GitHub، تُظهر فقط المخالفات التي أضافها هذا التغيير.

ثبّت CleanLens اليوم، وكل ميزة جديدة تصلك تلقائياً مع التحديثات.

ثبّت مجاناً

المواعيد والتفاصيل قد تتغيّر أثناء التطوير.

مجاني · افتحه في VS Code

امنح فريقك تقارير جودة عادلة

ثبّت CleanLens، شغّل التحليل، واعرف من أدخل كل مشكلة فعلاً.

تثبيت من VS Code Marketplace