← नवीनतम पेपर
💻 computer science

SmellBench: Towards Fine-Grained Evaluation of Code Agents on Refactoring Tasks

यह शोध पत्र स्मेलबेंच (SmellBench) को प्रस्तुत करता है, जो वास्तविक दुनिया के कोड स्मेल्स (code smells) को इंजेक्ट करके रिफैक्टरिंग कार्यों पर कोड एजेंटों का मूल्यांकन करने के लिए डिज़ाइन किया गया एक नया बेंचमार्क है, जो यह प्रकट करता है कि वर्तमान शीर्ष प्रदर्शन करने वाले मॉडल क्रॉस-फाइल समझ (cross-file understanding) में संघर्ष करते हैं और इन रखरखाव संबंधी समस्याओं को समाप्त करने में केवल मध्यम सफलता प्राप्त करते हैं।

मूल लेखक: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

प्रकाशित 2026-06-05
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

यहाँ "SmellBench: Towards Fine-Grained Evaluation of Code Agents on Refactoring Tasks" पेपर का सरल भाषा और रचनात्मक उपमाओं (analogies) के साथ हिंदी अनुवाद दिया गया है।

बड़ी तस्वीर: "बिखरे हुए कमरे" की समस्या

कल्पना कीजिए कि आपके पास एक बहुत ही बुद्धिमान रोबोट सहायक (एक Code Agent) है जो कोड लिख सकता है, बग्स ठीक कर सकता है और फाइलों को व्यवस्थित कर सकता है। आप उससे एक बिखरे हुए कमरे को साफ करने (कोड रिफैक्टर करने) के लिए कहते हैं।

अधिकांश परीक्षण इन रोबटों से केवल यह पूछते हैं: "क्या आपने कुर्सी को इस तरह हटाया कि आप दरवाजे से गुजर सकें?" यदि रोबोट कुर्सी हटा देता है और आप गुजर पाते हैं, तो टेस्ट कहता है "पास!"

लेकिन यह पेपर तर्क देता है कि यह पर्याप्त नहीं है। रोबोट ने कुर्सी तो हटा दी होगी, लेकिन ऐसा करते समय उसने शायद एक लैंप गिरा दिया, फर्श पर कपड़ों का ढेर छोड़ दिया, और खिड़की को ब्लॉक कर दिया। कमरा काम तो कर रहा है (आप गुजर सकते हैं), लेकिन लंबे समय तक रहने के लिए यह एक आपदा है। डेवलपर्स इसे "Code Smells" कहते हैं—ऐसा भारी, बिखरा हुआ या खराब तरीके से व्यवस्थित कोड जो आज तो काम करता है लेकिन कल सिरदर्द पैदा करेगा।

SmellBench एक नया टेस्ट है यह देखने के लिए कि क्या ये AI रोबोट केवल यह चेक करने के बजाय कि "क्या दरवाजा अभी भी खुला है", वास्तव में गंदगी को साफ कर सकते हैं या नहीं।


उन्होंने टेस्ट कैसे बनाया (द "कंट्रोल्ड मेस" फैक्ट्री)

शोधकर्ताओं ने महसूस किया कि वास्तविक दुनिया के बिखरे हुए कोड के उदाहरण ढूंढना समुद्र तट पर रेत के एक विशिष्ट कण को खोजने जैसा है। यह कठिन है, और बिखराव अक्सर अन्य चीजों (जैसे नई सुविधाओं या बग फिक्स) के साथ मिला हुआ होता है।

इसलिए, उन्होंने पूरी तरह से नियंत्रित बिखराव (controlled messes) बनाने के लिए एक फैक्ट्री बनाई:

  1. साफ कमरा (The Clean Room): उन्होंने 7 प्रसिद्ध, साफ और सुव्यवस्थित पायथन प्रोजेक्ट्स (जैसे pandas या numpy) से शुरुआत की। इन्हें आप अत्यंत स्वच्छ और व्यवस्थित लाइब्रेरी मान सकते हैं।
  2. बिखराव डालना (Injecting the Smell): बिखराव को प्राकृतिक रूप से होने का इंतजार करने के बजाय, उन्होंने कोड को जानबूझकर बिगाड़ने के लिए एक AI का उपयोग किया। उन्होंने 7 विशिष्ट प्रकार के "स्मेल्स" (जैसे एक "God Class" जो बहुत कुछ करने की कोशिश करती है, या "Dead Code" जिसका कभी उपयोग नहीं होता) को इंजेक्ट किया।
  3. ग्राउंड ट्रुथ (The Ground Truth): क्योंकि उन्होंने खुद ही बिखराव पैदा किया था, इसलिए वे जानते हैं कि कोड को खराब करने से पहले उसका साफ संस्करण कैसा दिखता था। यह उनका "उत्तर कुंजी" (Answer Key) है।

परिणाम: 294 विशिष्ट "बिखरे हुए" परिदृश्य (scenarios) का एक डेटासेट, जो आसान से लेकर बहुत कठिन तक फैला हुआ है और 7 अलग-अलग प्रकार की कोड बदसूरती को कवर करता है।


7 प्रकार के "कोड स्मेल्स" (बिखरे हुए कमरे के परिदृश्य)

पेपर 7 विशिष्ट तरीकों पर ध्यान केंद्रित करता है जिनसे कोड बिखरा हुआ हो जाता है। यहाँ उनका रोजमर्रा की जिंदगी में अनुवाद दिया गया है:

  1. Feature Envy: एक व्यक्ति (एक फंक्शन) जो अपने स्वयं के सामान का उपयोग करने के बजाय लगातार अपने पड़ोसी के घर से चीजें उधार लेता रहता है। उपमा: आपके पास अपना टूलबॉक्स होने के बावजूद, आप पड़ोसी का हथौड़ा उधार लेते रहते हैं क्योंकि आपके पास अपना नहीं है।
  2. God Classes: एक अकेला व्यक्ति जो कंपनी में हर काम करने की कोशिश करता है (खाना बनाना, अकाउंटिंग, सुरक्षा और एचआर)। उपमा: एक अकेला सफाईकर्मी जो प्लंबिंग ठीक करने, गणित पढ़ाने और ब्रेड बनाने का काम एक साथ कर रहा है।
  3. Data Clumps: वस्तुओं के एक ही समूह (चाबियाँ, वॉलेट, फोन) को हर जगह अपने साथ ले जाना, भले ही आपको केवल एक चीज़ की आवश्यकता हो। उपमा: सिर्फ एक बल्ब बदलने के लिए पूरा टूलबॉक्स साथ ले जाना।
    4.�Shotgun Surgery: आप एक छोटी सी चीज़ (जैसे दीवारों का रंग) बदलना चाहते हैं, लेकिन इसके लिए आपको 10 अलग-अलग कमरों में जाना पड़ता है। उपमा: किसी उत्पाद की कीमत बदलने के लिए आपको रसीद, वेबसाइट, इनवॉइस और शिपिंग लेबल सबको अलग-अलग अपडेट करना पड़ता है।
  4. Dead Code: एक कमरे में फर्नीचर जिस पर कोई कभी बैठता नहीं या उपयोग नहीं करता। उपमा: किताबों की एक अलमारी जो उन किताबों से भरी है जिन्हें आपने 10 साल पहले पढ़ा था और अब आप उन्हें कभी छूते भी नहीं।
  5. Interface Segregation: एक रिमोट कंट्रोल जिसमें 50 बटन हैं, लेकिन आप केवल 3 का ही उपयोग करते हैं। उपमा: एक रेस्टोरेंट का मेनू जो आपको एक गिलास पानी पाने के लिए भी स्टेक, सलाद और डेजर्ट ऑर्डर करने के लिए मजबूर करता है।
  6. Deep Inlining: एक रेसिपी जो कहती है "चरण 1 करें, जिसका अर्थ है चरण 2 करें, जिसका अर्थ है चरण 3 करें..." और यह सब एक विशाल पैराग्राफ में लिखा गया है। उपमा: एक नक्शा जहाँ निर्देश निर्देशों के अंदर ही लिखे गए हैं, जिससे उनका पालन करना असंभव हो जाता है।

प्रयोग: क्या रोबोट सफाई कर सकते हैं?

शोधकर्ताओं ने इन बिखरे हुए कोड स्निपेट्स को 2 लोकप्रिय AI एजेंटों (OpenHands और Qwen Code) को दिया, जो 6 अलग-अलग "मस्तिष्कों" (Claude, GPT और DeepSeek जैसे Large Language Models) द्वारा संचालित थे।

नियम:

  • AI को गंदगी को खोजना था।
  • AI को गंदगी को ठीक करना था।
  • AI को यह सुनिश्चित करना था कि कोड अभी भी काम करे (टेस्ट पास हो)।

परिणाम (चौंकाने वाला हिस्सा):
सबसे अच्छे कॉम्बिनेशन (Qwen Code + Claude Sonnet 4.5) ने भी स्मेल्स को खत्म करने में केवल 50.34% का स्कोर प्राप्त किया।

  • "दरवाजा" टेस्ट (Functional Correctness): रोबोट इसमें बहुत अच्छे थे। अधिकांश ने "दरवाजा खुला" रखा (कोड चलता रहा)। वे 80-90% बार बुनियादी टेस्ट पास कर लेते हैं।
  • "साफ कमरा" टेस्ट (Refactoring Quality): रोबोट यहाँ विफल रहे। वे अक्सर तात्कालिक समस्या को तो ठीक कर देते थे लेकिन कमरे को बिखरा हुआ ही छोड़ देते थे। वे बड़े चित्र (big picture) को देखने में संघर्ष करते थे, खासकर जब बिखराव कई फाइलों से जुड़ा हो (जैसे "Shotgun Surgery" स्मेल)।

मुख्य निष्कर्ष: AI कोड को चलाने में अच्छा है, लेकिन वर्तमान में यह कोड को सुंदर और बनाए रखने योग्य (maintainable) बनाने में कमजोर है।


यह क्यों मायने रखता है

पेपर यह निष्कर्ष निकालता है कि हम केवल AI से यह नहीं पूछ सकते, "क्या कोड चला?" हमें यह भी पूछना होगा, "क्या कोड साफ है?"

उन्होंने एक नए तरीके से AI को ग्रेड करने के लिए एक "जज AI" पेश किया जो देखता है:

  1. क्या इसने टेस्ट पास किया? (क्या दरवाजा खुलता है?)
  2. क्या इसने ठीक करने के लिए सही जगह ढूंढी? (क्या इसने सही कमरे में देखा?)
  3. क्या कोड वास्तव में बेहतर हुआ है? (क्या कमरा व्यवस्थित है?)

सार (Bottom Line): वर्तमान AI एजेंट उन उत्साही इंटर्न की तरह हैं जो फर्नीचर तो हिला सकते हैं लेकिन अक्सर पीछे धूल का निशान छोड़ देते हैं। वे बेहतर हो रहे हैं, लेकिन जटिल सॉफ्टवेयर सिस्टम को पेशेवर रूप से "रिफैक्टर" (साफ) करने के लिए उन्हें अभी लंबा रास्ता तय करना है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →