← नवीनतम पेपर
💻 संगणक विज्ञान

An LLM-based Technique for Detection of Code Clones Across Open Source Microservice Repository Forks

यह अध्ययन प्रदर्शित करता है कि Codestral-22B LLM के साथ फ्यू-शॉट निरंतर प्रॉम्प्टिंग (few-shot continuous prompting) का उपयोग करने वाला एक RAG-आधारित पाइपलाइन, रिकॉल (recall) की वर्तमान सीमाओं के बावजूद, पारंपरिक सिंटैक्स-आधारित उपकरणों से बेहतर प्रदर्शन करते हुए, ओपन-सोर्स माइक्रोसर्विस फोर्क्स में सिमेंटिक कोड क्लोन और पुन: उपयोग के पैटर्न को प्रभावी ढंग से पहचानता है।

मूल लेखक: Jamie Kemman, Shreya Nakum, Alexander Bakhtin, Matteo Esposito, Tomas Cerny, Valentina Lenarduzzi, Davide Taibi

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

मूल लेखक: Jamie Kemman, Shreya Nakum, Alexander Bakhtin, Matteo Esposito, Tomas Cerny, Valentina Lenarduzzi, Davide Taibi

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

सॉफ्टवेयर विकास की विशाल और सहयोगात्मक दुनिया में, प्रोग्रामर अक्सर मौजूदा कोड को लेकर उसे किसी अलग उद्देश्य के लिए अनुकूलित करके नए एप्लिकेशन बनाते हैं। 'फोर्किंग' (forking) के रूप में जानी जाने वाली यह प्रथा ओपन-सोर्स नवाचार का इंजन है, जो टीमों को शून्य से शुरुआत करने के बजाय दिग्गजों के कंधों पर खड़े होने की अनुमति देती है। हालाँकि, जैसे-जैसे ये प्रोजेक्ट बढ़ते हैं और शाखाओं में बँटते हैं, एक छिपी हुई जटिलता उत्पन्न होती है: इनके भीतर का कोड डुप्लिकेट्स के एक उलझे हुए जाल में बदल सकता है। कुछ प्रतियाँ बिल्कुल समान होती हैं, जो पंक्ति-दर-पंक्ति प्रतिलिपियाँ हैं, जबकि अन्य चतुराई से लिखे गए संस्करण होते हैं जो वही काम करते हैं लेकिन सतह पर पूरी तरह से अलग दिखते हैं। इन्हें 'कोड क्लोन' (code clones) के रूप में जाना जाता है। बड़े सॉफ्टवेयर सिस्टम के रखरखाव करने वालों के लिए, विशेष रूप से वे जो कई छोटी, स्वतंत्र सेवाओं के संग्रह के रूप में बनाए गए हैं, इन डुप्लिकेट्स को खोजना एक बहुत बड़ा कार्य है। पारंपरिक उपकरण सटीक प्रतियों को पहचानने में उत्कृष्ट हैं, लेकिन वे अक्सर तब विफल हो जाते हैं जब दो कोड के हिस्से को पूरी तरह से अलग तरीकों से समान कार्य करने के लिए पुनर्गठित (refactored) किया गया हो। यह समझना कि ये डुप्लिकेट्स कहाँ और कैसे मौजूद हैं, अत्यंत महत्वपूर्ण है, क्योंकि यह प्रकट करता है कि सॉफ्टवेयर कैसे विकसित होता है, विसंगति के जोखिम कहाँ छिपे हैं, और सिस्टम को सुचारू रूप से चलाने के लिए वास्तव में कितने प्रयास की आवश्यकता है।

शोधकर्ताओं की एक टीम ने हाल ही में एक नए प्रकार के डिजिटल टूल का परीक्षण करके इस समस्या को हल करने का प्रयास किया: लार्ज लैंग्वेज मॉडल्स (LLMs)। ये वही शक्तिशाली आर्टिफिशियल इंटेलिजेंस सिस्टम हैं जो कहानियाँ लिख सकते हैं या प्रश्नों के उत्तर दे सकते हैं, लेकिन यहाँ उन्हें कंप्यूटर कोड के तर्क को समझने के लिए प्रशिक्षित किया गया था। शोधकर्ता यह देखना चाहते थे कि क्या ये मॉडल एक परिष्कृत सूक्ष्मदर्शी (microscope) की तरह कार्य कर सकते हैं, जो न केवल समान कोड, बल्कि उस 'सिमेंटिकली सिमिलर' (अर्थपूर्ण रूप से समान) कोड को भी पहचान सकें जिसे पारंपरिक उपकरण नहीं देख पाते। उन्होंने अपना ध्यान ओपन-सोर्स माइक्रोसर्विस प्रोजेक्ट्स पर केंद्रित किया, जो आधुनिक सॉफ्टवेयर सिस्टम हैं और कई छोटी, परिवर्तनीय भागों से बने होते हैं। शुरुआत करने के लिए, उन्हें इन मॉडल्स को विभिन्न प्रकार के कोड क्लोन को पहचानने के तरीके सिखाने की आवश्यकता थी। उन्होंने दस हजार C++ कोड स्निपेट्स का एक विशाल डेटासेट एकत्र किया, जिनमें से आधे ज्ञात रूप से कार्यात्मक रूप से समान लेकिन सिंटैक्टिक रूप से भिन्न थे, और शेष आधे असंबंधित थे। उन्होंने तीन अलग-अलग आर्टिफिशियल इंटेलिजेंस मॉडल्स का परीक्षण किया, जो एक सामान्य-उद्देश्य वाले सिस्टम से लेकर विशेष रूप से कोडिंग कार्यों के लिए डिज़ाइन किए गए दो विशिष्ट मॉडल्स तक विस्तृत थे। उन्होंने मॉडल्स को कार्य करने के लिए निर्देश देने के विभिन्न तरीकों के साथ भी प्रयोग किया, जिसमें सरल निर्देशों से लेकर जटिल प्रॉम्प्ट्स तक शामिल थे, जो उदाहरण प्रदान करते थे और कॉन्फिडेंस स्कोर मांगते थे।

प्रारंभिक परीक्षण के परिणाम काफी उत्साहजनक थे। शोधकर्ताओं ने पाया कि विशिष्ट कोडिंग मॉडल्स, सामान्य-उद्देश्य वाले मॉडल की तुलना में कहीं अधिक श्रेष्ठ थे। उनमें से, 'कोडेस्ट्रल' (Codestral) नामक एक मॉडल सबसे सटीक बनकर उभरा, जिसने 65.5% की उच्चतम समग्र सटीकता प्राप्त की और अन्य विशिष्ट मॉडल एवं सामान्य-उद्देश्य वाले सिस्टम दोनों को पीछे छोड़ दिया। हालाँकि, अध्ययन ने एक महत्वपूर्ण सीमा भी उजागर की: सबसे अच्छा मॉडल भी गलतियाँ करता था। यह अक्सर उन्हीं डुप्लिकेट्स को पहचानने में चूक जाता था जिन्हें उसे खोजना था, और लगभग चालीस प्रतिशत बार उन्हें पहचानने में विफल रहता था। यह निश्चित रूप से अलग कोड की पहचान करने में तो अच्छा था, लेकिन सूक्ष्म समानताओं को पहचानने के मामले में बहुत अधिक सतर्क (cautious) था। मिस डिटेक्शन (missed detection) की इस उच्च दर का अर्थ था कि, फिलहाल, ये शक्तिशाली उपकरण पेशेवर, स्वचालित सेटिंग में कोड प्रबंधन के एकमात्र तरीके के रूप में उपयोग करने के लिए पर्याप्त विश्वसनीय नहीं हैं। वे उपयोगी सहायक तो हैं, लेकिन वे अभी मानव निर्णय या स्थापित पहचान विधियों का स्थान नहीं ले सकते।

सबसे अच्छा प्रदर्शन करने वाले मॉडल और उसे प्रॉम्प्ट करने के सबसे प्रभावी तरीके से लैस होकर, शोधकर्ताओं ने वास्तविक दुनिया की ओर अपना ध्यान केंद्रित किया। उन्होंने ओपन-सोर्स माइक्रोसर्विस रिपॉजिटरीज़ के बाईस जोड़े चुने, जहाँ एक मूल प्रोजेक्ट था और दूसरा एक 'फोर्क' था जिसे डेवलपर्स के एक अलग समूह द्वारा संशोधित किया गया था। उन्होंने इन कोडबेसेस को अपने सिस्टम में डाला ताकि मूल और फोर्क के बीच किस प्रकार के डुप्लिकेट्स मौजूद हैं, इसका मानचित्रण किया जा सके। निष्कर्षों ने इन प्रोजेक्ट्स के विकास की एक स्पष्ट तस्वीर पेश की। सबसे आम प्रकार का डुप्लिकेट जो उन्होंने पाया, वह था 'एक्जैक्ट कॉपी', जहाँ कोड अपरिवर्तित रहा। दूसरा सबसे आम 'टाइप-3 क्लोन' था, जहाँ कोड में बदलाव (जोड़ या हटाना) किया गया था लेकिन उसकी मूल कार्यक्षमता बरकरार रही। आश्चर्यजनक रूप से, पूरी तरह से दोबारा लिखा गया कोड जो बिल्कुल अलग तरीके से वही काम करता है, इन विशिष्ट प्रोजेक्ट्स में अन्य प्रकारों की तुलना में कम आम था। यह सुझाव देता है कि जब डेवलपर्स एक माइक्रोसर्विस को फोर्क करते हैं, तो वे पहिए का पूर्ण पुनरुद्धार करने के बजाय मूल संरचना को बरकरार रखने की प्रवृत्ति रखते हैं।

अपने स्वचालित निष्कर्षों को भरोसेमंद बनाने के लिए, शोधकर्ताओं ने मॉडल के आउटपुट की तुलना मानव विशेषज्ञों द्वारा तीन प्रोजेक्ट्स की मैन्युअल समीक्षा के विरुद्ध की। मानव समीक्षकों ने पुष्टि की कि मॉडल सामान्य रूप से डुप्लिकेट्स के सबसे आम प्रकारों को पहचानने में सही था, हालांकि विशिष्ट संख्याएँ इस बात पर निर्भर करती थीं कि मॉडल ने कोड को पढ़ने के लिए किस अंतर्निहित तकनीक का उपयोग किया। अध्ययन ने निष्कर्ष निकाला कि हालांकि आर्टिफिशियल इंटेलिजेंस कोड के टुकड़ों के बीच गहरे, सिमेंटिक संबंधों को समझने का एक आशाजनक नया तरीका प्रदान करता है, लेकिन यह अभी तक एक पूर्ण समाधान नहीं है। यह तकनीक उन पैटर्न्स को देखने के लिए पर्याप्त शक्तिशाली है जिन्हें मनुष्य और पुराने उपकरण मिस कर सकते हैं, लेकिन यह पूरी तरह से डुप्लिकेट को मिस करने के उच्च जोखिमों के साथ संघर्ष करती है। फिलहाल, ये मॉडल्स कोड के जटिल इतिहास को समझने में मदद करने के लिए एक मार्गदर्शक के रूप में सबसे अच्छे हैं, न कि एक अंतिम अधिकार के रूप में। आगे का रास्ता इन उपकरणों को परिष्कृत करने और उनकी सिमेंटिक समझ को पारंपरिक विधियों के साथ जोड़ने में निहित है ताकि सॉफ्टवेयर विकास की एक अधिक पूर्ण तस्वीर बनाई जा सके।

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

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

Digest आज़माएँ →