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

An Empirical Evaluation of Code Smell Detection in Angular Applications

यह अध्ययन ग्रे लिटरेचर (grey literature) से प्राप्त एंगुलर-विशिष्ट कोड स्मेल्स (Angular-specific code smells) का पहला कैटलॉग प्रस्तुत करता है और इन समस्याओं का पता लगाने में एक स्वचालित स्टैटिक एनालिसिस टूल की उच्च प्रभावशीलता को प्रदर्शित करता है, जो 0.88 से ऊपर सटीकता और 1.00 तक F1-स्कोर प्राप्त करता है।

मूल लेखक: Maykon Nunes, Emanuel Coutinho, Carla Bezerra, Ivan Machado

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

मूल लेखक: Maykon Nunes, Emanuel Coutinho, Carla Bezerra, Ivan Machado

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

कल्पना कीजिए कि आप ब्लूप्रिंट और औजारों के एक विशिष्ट सेट, जिसे Angular कहा जाता है, का उपयोग करके एक विशाल, जटिल घर बना रहे हैं। यह आधुनिक वेब एप्लिकेशन बनाने का एक लोकप्रिय तरीका है क्योंकि यह मजबूत, व्यवस्थित और इसमें वह सब कुछ शामिल है जिसकी आपको आवश्यकता है। हालाँकि, ठीक वास्तविक जीवन के निर्माण की तरह, यदि आप सावधान नहीं रहते हैं, तो आप काम चोरी करने या चीजों को अस्त-व्यस्त तरीके से बनाने लग सकते हैं। इन अव्यवस्थित आदतों को "कोड स्मेल" (code smells) कहा जाता है।

कोड स्मेल को टूटी हुई दीवार के रूप में न देखें, बल्कि एक चेतावनी संकेत के रूप में देखें—जैसे इंजन में अजीब आवाज़ आना या किसी दरवाजे का अटकना। इसका मतलब यह नहीं है कि घर तुरंत ढह जाएगा, बल्कि यह सुझाव देता है कि डिज़ाइन दोषपूर्ण है, और यदि आप इसे अनदेखा करते रहे, तो भविष्य में इस घर को ठीक करना या इसका विस्तार करना एक दुस्वप्न बन जाएगा।

यह पेपर एक विशेषज्ञ होम इंस्पेक्टर (शोधकर्ताओं) की टीम की तरह है जो Angular के बिल्डरों के समुदाय में गए और पूछा: "आप सबसे आम बुरी आदतें क्या देखते हैं?" उन्होंने केवल आधिकारिक नियमपुस्तिकाओं को ही नहीं देखा; उन्होंने फ़ोरम, ब्लॉग और चैट समूहों (जिसे वे "ग्रे लिटरेचर" कहते हैं) में बिल्डरों की बातों को भी सुना।

यहाँ उन्होंने क्या पाया और क्या किया, इसे सरल भाषा में समझाया गया है:

1. जासूसी का काम: गंध (Smells) को खोजना

शोधकर्ताओं ने जासूसों की तरह काम किया, सैकड़ों ऑनलाइन चर्चाओं को छानकर बार-बार आने वाली शिकायतों को खोजा। अंततः उन्होंने 11 विशिष्ट "बुरी आदतों" की पहचान की, जिनमें Angular डेवलपर्स अक्सर फंस जाते हैं।

आपको समझाने में मदद करने के लिए, यहाँ इन स्मल्स में से कुछ को सरल उपमाओं के साथ दिया गया है:

  • "किचन सिंक" कंपोनेंट (बड़ा कंपोनेंट): कल्पना कीजिए कि आपके घर में एक ही कमरा है जो रसोई, बेडरूम, बाथरूम और गैरेज सभी होने की कोशिश कर रहा है। Angular में, ऐसा तब होता है जब कोड का एक हिस्सा बहुत सारे अलग-अलग काम करने की कोशिश करता है। यह विशाल, भ्रमित करने वाला और साफ करने में कठिन हो जाता है।
  • "मैजिक बॉक्स" (any टाइप का अत्यधिक उपयोग): Angular एक भाषा का उपयोग करता है जिसे TypeScript कहा जाता है, जो एक सख्त सुरक्षा निरीक्षक की तरह है जो यह जाँचता है कि आप सही छेद में सही ईंटें डाल रहे हैं या नहीं। कभी-कभी, डेवलपर्स आलसी हो जाते हैं और कहते हैं, "बस यहाँ कुछ भी डाल दो," "any" नामक "मैजिक बॉक्स" का उपयोग करके। यह सुरक्षा निरीक्षक को बंद कर देता है। घर आज ठीक दिख सकता है, लेकिन बाद में, एक भारी सोफा उस फर्श से नीचे गिर सकता है जिसके लिए वह नहीं बनाया गया था क्योंकि निरीक्षक देख नहीं रहा था।
  • "रस्साकशी" (अत्यधिक पैरेंट-टू-चाइल्ड कम्युनिकेशन): कल्पना कीजिए कि एक माता-पिता लगातार बच्चे को निर्देश दे रहे हैं, या इससे भी बुरा, माता-पिता बच्चे के कमरे में घुसकर सीधे उनके फर्नीचर को व्यवस्थित कर रहे हैं। Angular में, कंपोनेंट्स को विनम्रता से बात करनी चाहिए। जब एक पैरेंट कंपोनेंट एक चाइल्ड कंपोनेंट को पकड़ लेता है और उसे सीधे उसकी स्थिति बदलने के लिए मजबूर करता है, तो यह एक उलझी हुई गांठ जैसा बन जाता है जिसे सुलझाना कठिन होता है।
  • "डायरेक्ट हैमर" (डायरेक्ट DOM मैनिपुलेशन): Angular के पास दीवारों (स्क्रीन) को स्वचालित रूप से पेंट करने का एक विशेष तरीका है। कभी-कभी, डेवलपर्स अधीर हो जाते हैं और स्वचालित पेंटर को दरकिनार करते हुए सीधे दीवार पर हथौड़ा मारते हैं। यह एक पल के लिए काम करता है, लेकिन यह सिस्टम की निरंतरता बनाए रखने की क्षमता को तोड़ देता है।
  • "कॉपी-पेस्ट" घर (डुप्लिकेटेड कंपोनेंट): कल्पना कीजिए कि आपने एक ही घर में दो समान रसोई घर बना दिए क्योंकि आप भूल गए थे कि आपने पहले से ही एक बना लिया है। यह जगह बर्बाद करता है और इसका मतलब है कि यदि आप सिंक बदलना चाहते हैं, तो आपको दो जगहों पर बदलाव करना होगा।

2. ओवरलैप: Angular बनाम React

शोधकर्ताओं ने एक दिलचस्प बात भी देखी। उन्होंने अपने Angular स्मल्स की तुलना React के बुरे अभ्यासों से की, जो एक अन्य लोकप्रिय बिल्डिंग फ्रेमवर्क है।

  • समान आधार: लगभग आधे बुरे अभ्यासों (जैसे "किचन सिंक" या "कॉपी-पेस्ट" के मुद्दे) में Angular और React दोनों समान हैं। यह स्पष्ट है कि जब आप ब्लॉक्स के साथ निर्माण करते हैं, तो मनुष्य चाहे जो भी ब्रांड के ब्लॉक्स इस्तेमाल करें, वे एक जैसी गलतियाँ करते हैं।
  • अद्वितीय स्मल्स: कुछ स्मल्स केवल Angular के लिए विशिष्ट हैं, जो आमतौर पर स्क्रीन को अपडेट करने या डेटा को संभालने के इसके विशिष्ट नियमों से संबंधित होते हैं।

3. समाधान: एक नया "स्निफर" टूल

एक बार जब उनके पास इन 11 स्मल्स की सूची बन गई, तो शोधकर्ताओं ने केवल एक रिपोर्ट नहीं लिखी; उन्होंने एक रोबोट इंस्पेक्टर बनाया।

  • उन्होंने मौजूदा टूल्स को लिया जो React में बुरी आदतों को सूंघ सकते थे और उन्हें Angular को समझने के लिए अपग्रेड किया।
  • यह नया टूल आपके कोड फाइलों को स्कैन करता है, इन 11 स्मल्स के विशिष्ट पैटर्न को ढूंढता है, और उन्हें आपके लिए फ्लैग (चिह्नित) करता है।

4. परीक्षण: क्या रोबोट काम कर रहा था?

यह देखने के लिए कि उनका रोबोट कितना अच्छा था, उन्होंने इसे वास्तविक, ओपन-सोर्स Angular प्रोजेक्ट्स के एक सेट पर टेस्ट किया। उन्होंने पहले कोड को मैन्युअल रूप से चेक किया ताकि यह सुनिश्चित हो सके कि स्मल्स वास्तव में वहां मौजूद थे, फिर रोबोट को चलाया।

  • परिणाम: रोबोट आश्चर्यजनक रूप से अच्छा था। उसने बहुत उच्च सटीकता (88% से अधिक सही) के साथ बुरी आदतों को पकड़ा और "मैजिक बॉक्स" (any टाइप) और "कॉपी-पेस्ट" के मुद्दों को खोजने में लगभग परफेक्ट था।
  • एक खामी: रोबोट कभी-कभी आकार को लेकर बहुत उत्साहित हो जाता था। यदि कोई फाइल स्वाभाविक रूप से बड़ी थी क्योंकि काम जटिल था (जैसे कि एक बड़ा, वैध गोदाम), तो रोबोट ने उसे "लार्ज फाइल" स्मेल के रूप में फ्लैग कर दिया, भले ही वह व्यवस्थित रूप से बनाई गई हो। यह एक सुरक्षा गार्ड की तरह है जो हर उस व्यक्ति को रोकता है जो एक भारी बॉक्स ले जा रहा है, भले ही वे केवल फर्नीचर स्थानांतरित कर रहे हों।

यह क्यों महत्वपूर्ण है

मुख्य निष्कर्ष यह है कि इस अध्ययन ने Angular-विशिष्ट बुरी आदतों का पहला आधिकारिक कैटलॉग बनाया, जो इस आधार पर है कि वास्तविक डेवलपर्स वास्तव में क्या चर्चा करते हैं। उन्होंने साबित किया कि हम इन मुद्दों को जल्दी पकड़ने के लिए स्वचालित उपकरण बना सकते हैं, जिससे डेवलपर्स अपने डिजिटल घरों को साफ, सुरक्षित और भविष्य में विस्तार करने में आसान रख सकते हैं।

संक्षेप में: उन्होंने बिल्डरों की बात सुनी, सामान्य गलतियों को सूचीबद्ध किया, उन गलतियों को खोजने के लिए एक रोबोट बनाया, और दिखाया कि वह रोबोट बहुत अच्छी तरह से काम करता है।

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

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

Digest आज़माएँ →