منصوبے کے بارے میں
Ditto خود کو "Semantic CI" کے طور پر پیش کرتا ہے: کمپائل، ٹیسٹ اور لنٹ کے ساتھ ایک اضافی پائپ لائن سوال — کیا یہ کوڈ بیس کسی ایسی چیز کو دوبارہ ایجاد کر رہا ہے جسے وہ پہلے سے جانتا ہے؟ اس کا ہدف Type-4 کلونز ہیں، یعنی وہ فنکشنز جو ایک جیسا برتاؤ کرتے ہیں لیکن مختلف طریقے سے لکھے گئے ہیں، جنہیں عام طور پر ٹوکن اور AST پر مبنی ڈپلیکیٹ ڈیٹیکٹرز رپورٹ نہیں کرتے۔
دستاویزی پائپ لائن اس طرح کام کرتی ہے: بیک اینڈ ایک ریپوزٹری ٹار بال ڈاؤن لوڈ کرتا ہے، ts-morph کے ذریعے اس کا جائزہ لے کر ہر فنکشن (بشمول غیر برآمد شدہ) نکالتا ہے، اور پھر ناموں کو نظر انداز کرتے ہوئے ایک سستے ماڈل کے ذریعے ہر فنکشن کا فنگر پرنٹ لیتا ہے۔ یہ فنگر پرنٹس — نہ کہ خام کوڈ یا نام — میموری میں ایمبیڈنگ اور کوسائن سیمیلیرٹی کے ذریعے کلسٹر کیے جاتے ہیں۔ صرف نتیجے کے طور پر حاصل ہونے والے امیدوار کلسٹرز ہی فیصلے کے لیے ایک بڑے ماڈل تک پہنچتے ہیں، جو مخالفانہ ان پٹس (adversarial inputs) بھی تجویز کرتا ہے۔ فنکشنل پیور فنکشنز کو پھر ٹائم آؤٹ کے ساتھ worker_threads سینڈ باکس میں ساتھ ساتھ چلایا جاتا ہے، اور وہاں تصدیق شدہ فرق کو بطور ثبوت پیش کیا جاتا ہے؛ امپیور فنکشنز کو اب بھی کلسٹر اور فیصلہ کیا جاتا ہے لیکن انہیں 'پیشن گوئی شدہ' (predicted) کے طور پر لیبل کیا جاتا ہے، 'ایگزیکیوٹڈ' (executed) کے طور پر نہیں۔ نتائج MongoDB میں لکھے جاتے ہیں اور ریڈ-اونلی اینڈ پوائنٹس اور Next.js فرنٹ اینڈ کے ذریعے فراہم کیے جاتے ہیں؛ سرونگ پاتھ کسی ماڈل کو کال نہیں کرتا۔
README پانچ ریپوزٹریز (2,870، 2,654، 336، 31 اور 6 فنکشنز) پر رن رپورٹ کرتا ہے، جس میں ڈپلیکیٹ کلسٹرز، رویے کے تنازعات اور ایگزیکیوشن کے ذریعے ثابت شدہ 18 کیسز شامل ہیں، بشمول cline میں truncateText کے عمل درآمدات کا ایک خاندان جہاں ایک ریزروڈ اسپیس کیلکولیشن ایک خاص حد سے اوپر رکھے گئے متن کو ایک کردار تک سکیڑ دیتی ہے۔ یہ بتاتا ہے کہ jscpd ان فائلوں میں صفر کلونز رپورٹ کرتا ہے۔ دو چھوٹی، اچھی طرح سے برقرار رکھی گئی لائبریریوں کو کلین اسکور کیا گیا، جسے مصنفین اوور رپورٹنگ کے خلاف ثبوت کے طور پر پیش کرتے ہیں۔
بیان کردہ حدود: صرف JavaScript/TypeScript، کیونکہ AST لیئر ts-morph ہے؛ ایگزیکیوشن کے لیے پیورٹی (purity) ضروری ہے؛ بڑی ریپوزٹریز کو خاموشی سے کاٹنے کے بجائے واضح طور پر اسکوپ کیا جانا چاہیے، کیونکہ ایک خاموشی سے گرایا گیا فنکشن پورے کلسٹر کو غائب کر سکتا ہے؛ اور یہ ٹول یہ سفارش نہیں کرتا کہ دو متصادم عمل درآمدات میں سے کسے رکھا جائے، اسے انسانی فیصلے کے طور پر پیش کیا گیا ہے۔ README میں لاگت اور وقت کے اعداد و شمار (مثال کے طور پر 2,870 فنکشنز کے تجزیے کے لیے ₹232، اور منصوبہ بند Guard چیک کے لیے فی پل ریکویسٹ تقریباً ₹1) پروجیکٹ کی اپنی پیمائشیں ہیں، آزاد بینچ مارکس نہیں ہیں۔ ہوسٹڈ ڈیمو آن ڈیمانڈ تجزیے کو 600 فنکشنز تک محدود کرتا ہے، جسے مینٹینرز کے API کریڈٹس کی حد کے طور پر بیان کیا گیا ہے؛ اپنی کی (key) کے ساتھ مقامی طور پر چلانے سے یہ حد ختم ہو جاتی ہے۔
سیٹ اپ نوٹس میں MongoDB یا API کی کے بغیر ریپو کی انڈیکسنگ، MongoDB، OpenAI اور اختیاری GitHub/ماڈل سیٹنگز کے ساتھ ایک .env، 1200 سیکنڈ کی ریکویسٹ ٹائم آؤٹ کے ساتھ Cloud Run تعیناتی، Atlas نیٹ ورک ایکسیس، اور فرنٹ اینڈ کے لیے Vercel شامل ہے جہاں NEXT_PUBLIC_* ویلیوز بلڈ ٹائم پر ان لائن کی جاتی ہیں۔ ایک روڈ میپ Ditto Guard کو GitHub Action پل ریکویسٹ چیک، ایک MCP ٹول جو کوڈنگ ایجنٹس کو ڈپلیکیٹس لکھنے سے پہلے انڈیکس سے سوال کرنے کی اجازت دیتا ہے، tree-sitter کے ذریعے اضافی زبانیں، اور انکریمنٹل ری انڈیکسنگ کے طور پر فہرست کرتا ہے۔ معاونین کو لیبل شدہ 'good first issues' کی طرف اشارہ کیا گیا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.