ڈیولپرز AI اسسٹنٹس کے ساتھ کوڈنگ میں کون سی غلطیاں کرتے ہیں؟
ڈیولپرز کی طرف سے AI کوڈنگ اسسٹنٹس کے غلط استعمال کے سب سے عام طریقوں کی عملی نظر ثانی، اور bugs اور vulnerabilities کو شپ کرنے سے کیسے بچا جائے۔
AI اسسٹنٹس جیسے Copilot، Claude، اور Cursor کے بلٹ ان ماڈلز نے کوڈ لکھنے کی رفتار میں تبدیلی لائی ہے۔ انہوں نے یہ نہیں بدلا کہ اسے کتنی احتیاط سے review کرنے کی ضرورت ہے۔ جو نقصان میں نے AI سے معاون کوڈنگ میں دیکھا ہے وہ ماڈلز خود سے نہیں بلکہ چند دہرائے جانے والی عادتوں سے ہے۔
تجاویز کو پڑھے بغیر قبول کرنا
سب سے بڑی غلطی یہ ہے کہ tab دبا کر completion قبول کرنا کیونکہ یہ معقول لگتی ہے اور compile ہو جاتی ہے۔ معقول ہونا صحیح نہیں ہے۔ میں نے دیکھا ہے کہ ایک تجویز کردہ SQL query خاموشی سے WHERE clause کو refactor کے دوران ہٹا دیتی ہے، اور شخص نے اسے قبول کر لیا کیونکہ variable کے نام match کر رہے تھے۔ اگر آپ ہر لائن کو اسی رفتار سے نہیں پڑھ رہے ہیں جس سے آپ ایک ساتھی کی pull request پڑھتے ہیں، تو آپ کچھ ایسا شپ کریں گے جو آپ سمجھتے نہیں ہیں۔ ہر تجویز کو ایک junior dev سے پہلی ڈرافٹ کے طور پر سمجھیں جو تیز ہے لیکن آپ کے codebase کے conventions کو یاد نہیں رکھتا۔
سیکیورٹی سے متعلق کوڈ میں اس پر اعتماد کرنا
AI اسسٹنٹس public کوڈ کے بہت بڑے ڈھیر پر تربیت یافتہ ہیں، اور اس میں سے بہت ساری کوڈ میں سیکیورٹی کے مسائل موجود ہیں۔ ایک جلدی سے فائل اپ لوڈ ہینڈلر مانگیں اور آپ اکثر کچھ ایسا ملیں گے جس میں کوئی extension check نہیں، کوئی size limit نہیں، اور ایک path جو string concatenation کی بجائے os.path.join یا محفوظ library call سے بنایا نہیں گیا۔ Auth کے ساتھ بھی یہی داستان ہے: اسسٹنٹس JWTs کو localStorage میں store کرنے، یا secrets کو == کی بجائے constant-time comparison سے compare کرنے کی تجویز دینے پسند کرتے ہیں۔ یہ سب غیر معقول نہیں ہے، یہ صرف training data میں شماریاتی طور پر عام ہے۔ کسی بھی چیز کے لیے جو authentication، file I/O، deserialization، یا SQL کو چھوتی ہے، خود منطق لکھیں یا AI کے output کو اسی threat-modeling سوالات سے گزاریں جو آپ کسی بھی نئے کوڈ سے پوچھتے ہیں: عام دشمن input کے ساتھ کیا ہوتا ہے، اگر یہ call ناکام ہو تو کیا ہوتا ہے، یہ endpoint اور کون تک رسائی کر سکتا ہے۔
اسے dependencies اور APIs گھڑنے دینا
ماڈلز مکمل اعتماد کے ساتھ package کے نام اور function کی signatures کو hallucinate کرتے ہیں۔ یہ "slopsquatting" کا مسئلہ ہے — حملہ آور ان نقلی package کے نام رجسٹر کرتے ہیں جو models اکثر تجویز کرتے ہیں، اس لیے ایک غیر تصدیق شدہ pip install یا npm install ایسا کچھ pull کر سکتا ہے جو آپ کی logging library بالکل نہیں ہے۔ کسی بھی dependency کو شامل کرنے سے پہلے جو اسسٹنٹ کی سفارش کرے، چیک کریں کہ یہ واقعی PyPI یا npm پر موجود ہے، اس کے download count اور آخری publish date کو چیک کریں، اور اگر یہ چھوٹی ہے تو source کو skim کریں۔ یہی احتیاط API calls پر بھی لاگو ہوتی ہے: اگر اسسٹنٹ کسی ایسے method کا حوالہ دیتا ہے جو آپ کو نہیں پہچانتے، تو یہ فرض کرنے سے پہلے کہ یہ موجود ہے، actual docs چیک کریں۔
اپنے اپنے کوڈ کا ذہنی نقشہ کھونا
جب آپ خود کوڈ لکھتے ہیں، تو آپ کی ہر piece کے موجود ہونے کی وجہ کا ایک ذہنی نقشہ بناتے ہیں۔ جب آپ ایک session میں AI سے generated کوڈ کے بڑے blocks کو قبول کرتے ہیں، تو یہ نقشہ جلدی پتلا ہو جاتا ہے۔ پھر تین ہفتے بعد ایک bug ظاہر ہوتا ہے اور آپ کوڈ debug کر رہے ہیں جو آپ نے کبھی نہیں لکھا اور مکمل طور پر یاد نہیں رکھتے۔ حل یہ نہیں ہے کہ AI سے generated کوڈ سے بچا جائے، بلکہ اتنا سست ہونا ہے کہ merge کرنے سے پہلے ہر chunk کو اپنے آپ سے، یا کسی ساتھی سے، واضح کریں۔ اگر آپ یہ نہیں بتا سکتے کہ کوئی function کیا کرتا ہے اور یہ اس طریقے سے کیوں کرتا ہے، تو اسے ابھی merge نہ کریں۔
ٹیسٹس کو چھوڑ دینا کیونکہ کوڈ
AI کی مدد سے لکھا گیا، Michal Pilch (CISSP)، Korra Studio کے ذریعے جائزہ لیا گیا اور شائع کیا گیا۔
یہ Korra Studio کے علم کے ذخیرے کا ایک نوٹ ہے — یہ پلیٹ فارم ہر موضوع کو ایک سے ایک رہنمائی کے ساتھ جوڑتا ہے۔
مفت شروع کریںarrow_forward