Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

RubyCritic के साथ अपने रूबी कोड गुणवत्ता को बढ़ाएं: दृश्य विश्लेषण और निरंतर सुधार

RubyCritic आपके रूबी एप्लिकेशन में कोड स्मेल्स, कोड संरचना, परीक्षण में आसानी, और टेस्ट कवरेज को हाइलाइट करने वाली दृश्य रिपोर्ट प्रदान करता है।

यह सक्रिय विकास में है, नए कोड विश्लेषण टूल्स अक्सर नई सुविधाओं के रूप में पेश किए जाते हैं। RubyCritic के रिलीज़ पर नज़र रखना निश्चित रूप से उचित है।

यह लेख RubyCritic के कुछ लाभों, इसकी निर्भरताओं, और इसकी कोड रिपोर्ट को कैसे पढ़ें, इस पर छूएगा।

चलिए शुरू करते हैं!

अपने रूबी ऑन रेल्स एप्लिकेशन के लिए RubyCritic क्यों चुनें?

यदि आप अपने प्रोजेक्ट के लिए कोड सुधारों की समीक्षा करने के लिए एक ही स्थान चाहते हैं तो आपको RubyCritic का उपयोग करने पर विचार करना चाहिए। अपने विकास प्रक्रिया में RubyCritic को शामिल करना निश्चित रूप से विकास टीम द्वारा तकनीकी ऋण पर काम करने में खर्च किए गए समय को कम करेगा। अधिकांश तकनीकी ऋण विकास समय पर मैप किए जाएंगे।

कुछ लाभ जो RubyCritic आपके प्रोजेक्ट और विकास प्रक्रिया को प्रदान कर सकता है उनमें शामिल हैं:

  • एक ही स्थान पर एकीकृत जानकारी
  • दृश्य रिपोर्ट्स
  • <आसान इंस्टॉलेशन
  • शून्य कॉन्फ़िगरेशन
  • अनुकूलन की अनुमति
  • एक्सटेंसिबल होना — आप अपना खुद का ओपन-सोर्स इंटीग्रेशन बना सकते हैं
  • एक बैज जनरेटर 🎉

यह समझने के लिए कि RubyCritic कैसे काम करता है, आइए उन आंतरिक निर्भरताओं को देखें जिनका उपयोग यह रिपोर्ट बनाने के लिए करता है।

RubyCritic में आंतरिक निर्भरताएं

जब आप RubyCritic को अपने प्रोजेक्ट में जोड़ते हैं, तो कुछ निर्भरताएं भी शामिल होंगी।

आइए उन निर्भरताओं को हाइलाइट करें जो जादू करती हैं: Reek, Flay, और Flog जेम्स। ये निर्भरताएं RubyCritic को आपके कोड के बारे में मूल्यवान जानकारी दिखाने की अनुमति देती हैं। यह समझना कि वे कैसे काम करते हैं, RubyCritic को उपयोग करना आसान बनाता है।

Reek: रूबी में कोड स्मेल्स का पता लगाएं

Reek रूबी में कोड स्मेल्स का पता लगाने के लिए एक जेम है। कोड में एक बुरी गंध गलत कोड की पहचान करने के बारे में नहीं है, यह विश्लेषण करने के बारे में अधिक है कि क्या कोड को बेहतर तरीके से लिखा जा सकता है।

Reek का विश्लेषण पहचानता है कि कुछ किसी अन्य तरीके से लागू किया जा सकता है। यह कैसे सुझाव नहीं देता, क्योंकि अधिकांश कोड स्मेल्स बिजनेस लॉजिक और एक डेवलपर के भाषा के साथ अनुभव से जुड़े होते हैं।

उदाहरण के लिए, आप मेटाप्रोग्रामिंग तकनीकों का उपयोग करके आसानी से एक if स्टेटमेंट को फिर से लिख सकते हैं। इसे सही करने का तरीका, हालांकि, एक डेवलपर पर निर्भर करता है एक प्रोजेक्ट के संदर्भ के अनुसार। इस मामले में, कोई लाइब्रेरी सर्वोत्तम समाधान का संकेत नहीं दे पाएगी।

Reek स्मेल्स की एक विस्तृत सूची का पता लगाता है। यह जांच करता है और संभावित स्मेल्स की पहचान करता है:

  • क्लासेस
  • एट्रिब्यूट्स
  • मेथड्स
  • पैरामीटर्स
  • मॉड्यूल्स
  • इटरेटर्स
  • पॉलीमॉर्फिज्म का कार्यान्वयन

स्मेल्स ढूंढकर, आप अपने कोड को अधिक पठनीय और रखरखाव योग्य बनाने के लिए कदम उठा सकते हैं।

Reek कस्टम कॉन्फ़िगरेशन की अनुमति देता है:

  • इसके प्रकार से एक डिटेक्टर को अक्षम करें
  • स्कैन की जाने वाली डायरेक्टरीज़ को बाहर करें
  • चेतावनियों को चुप कराने के लिए फिल्टर्स का उपयोग करें

आप स्कैन में दबाने के लिए विशिष्ट कोड भी परिभाषित कर सकते हैं, एक बहुत उपयोगी विशेषता जब कोड अभी तक अंतिम रूप नहीं दिया गया है या रीफैक्टर किया गया है, या यहां तक कि यदि यह लीगेसी कोड है।

आइए देखें कि Reek कैसे काम करता है इसका एक नमूना। इस कोड में, एक्सेप्शन को केवल e के रूप में परिभाषित किया गया है।

 

यह कल्पना करना आसान है कि e का अर्थ एक एक्सेप्शन है, लेकिन क्या होगा यदि हमारे पास अन्य एक्सेप्शन्स हैं? उन्हें सही ढंग से पहचानना अच्छे कोड को बनाए रखने का सबसे अच्छा तरीका है।

Reek e को UncommunicativeVariableName के रूप में पहचानेगा और एक चेतावनी दिखाएगा।

 

Flay: रूबी कोड डुप्लीकेशन की जांच करें

Flay संरचनात्मक रूबी कोड समानताओं की पहचान करता है, जिसमें शामिल हैं:

  • प्रोजेक्ट के भीतर कोड डुप्लीकेशन का पता लगाना
  • किसी भी कोड स्तर पर अंतर की जांच
  • आपके कोड की गुणवत्ता को मापने के लिए एक स्कोर उत्पन्न करना (आपका स्कोर जितना कम, कोड उतना ही बेहतर)

यदि Flay आपके कोड में समानता की रिपोर्ट करता है, तो यह एक उच्च संकेतक है कि रीफैक्टरिंग की आवश्यकता है। इसे नज़रअंदाज न करें! डुप्लीकेट कोड बग्स का प्रवेश द्वार है। यदि आप एक जगह पर कुछ ठीक करते हैं लेकिन दूसरे के बारे में भूल जाते हैं, तो अधिक बग्स दिखाई देते हैं।

हम अपने स्वयं के सोर्स कोड में इसे चलाकर देख सकते हैं कि Flay कैसे काम करता है:

 

Flay इन दो के बीच समानताओं की पहचान करता है:

 

ध्यान दें कि कोड की स्पेलिंग बिल्कुल समान नहीं है, लेकिन इसकी कार्यक्षमता है और डुप्लीकेशन से बचने के लिए इसे रीफैक्टर किया जा सकता है। यही Flay का जादू है!

Flog: अपने रूबी में कोड जटिलता की जांच करें

Flog जांचता है कि आपका कोड परीक्षण करना कितना कठिन है। यह कोड की प्रत्येक पंक्ति के लिए एक जटिलता स्कोर सेट करता है और प्रत्येक मेथड और क्लास के लिए स्कोर को जोड़ता है।

स्कोर जितना अधिक, आपके कोड को उतना ही अधिक रीफैक्टर करने की आवश्यकता है क्योंकि यह दर्शाता है कि आपके पास अत्यधिक जटिल कार्यान्वयन है।

आइए Flog को कार्रवाई में देखें! एक छोटा परिवर्तन आपके स्कोर को भिन्न कर सकता है।

 
 

ध्यान दें कि कोड के पहले भाग में, हमारे पास एक or चेक है जो स्कोर को 0.4 अंक बढ़ाता है।

 
 

अन्य RubyCritic निर्भरताएं

RubyCritic अन्य रनटाइम निर्भरताओं का भी उपयोग करता है, जैसे:

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

RubyCritic की निर्भरताओं की सूची में गोता लगाएं।

अपने रूबी ऑन रेल्स ऐप के लिए RubyCritic का उपयोग

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

RubyCritic 'Code', 'Smells', और 'Coverage' रिपोर्ट प्रदान करता है। हम इनमें से प्रत्येक सुविधा को बारी-बारी से देखेंगे।

RubyCritic में ओवरव्यू

'Overview' पेज आपके प्रोजेक्ट के लिए कुल स्कोर को डोनट चार्ट पर दिखाता है, साथ ही रेटिंग्स (A सर्वश्रेष्ठ रेटिंग, F सबसे खराब)। 'Summary' सेक्शन प्रत्येक रेटिंग का विवरण दिखाता है, जिसमें फाइलों की संख्या, चर्न्स (कमिट परिवर्तन), और पाए गए स्मेल्स शामिल हैं।

RubyCritic के साथ अपने रूबी कोड गुणवत्ता को बढ़ाएं: दृश्य विश्लेषण और निरंतर सुधार

यहां 'Churn vs Complexity' सेक्शन में, सबसे बड़ी जटिलता वाली क्लास की पहचान करना पहले से ही संभव है, जिस पर शायद सबसे पहले ध्यान दिया जाना चाहिए।

इस ग्राफ को बेहतर ढंग से समझने के लिए, कोड चर्न को दोहराना उचित है। कोड जो बार-बार बदलता है, यह अलर्ट उठा सकता है कि कुछ गलत है — शायद लॉजिक या बिजनेस डोमेन में। किसी भी तरह, 'Churn vs Complexity' को देखने से आपको अपने प्रोजेक्ट में दर्द बिंदुओं को देखने में मदद मिल सकती है।

कोड रिपोर्ट

'Code' रिपोर्ट प्रत्येक क्लास के लिए एक स्कोर दिखाती है, जिसमें चर्न, जटिलता, डुप्लीकेशन, और स्मेल्स के संकेतक शामिल हैं।

आप इस सूची को किसी भी कॉलम द्वारा सॉर्ट कर सकते हैं ताकि उच्चतम रैंकिंग कारकों को देख सकें और सबसे महत्वपूर्ण मुद्दों को पहले संबोधित कर सकें।

RubyCritic के साथ अपने रूबी कोड गुणवत्ता को बढ़ाएं: दृश्य विश्लेषण और निरंतर सुधार

इसके अलावा, इस सूची में एक फिल्टर है जो आपको क्लास नाम द्वारा जल्दी से खोजने की अनुमति देता है।

क्लास नाम पर क्लिक करने से एक विस्तृत पेज खुल जाएगा जिसमें क्लास कोड और मेट्रिक्स जैसे:

  • कोड लाइन
  • मात्रा मेथड्स
  • गणना किया गया चर्न
  • मेथड द्वारा जटिलता
  • जटिलता स्कोर (प्रति क्लास कुल)
  • पाए गए डुप्लीकेट्स की मात्रा
  • स्मेल्स की संख्या

कोड की वह लाइन जहां कोई समस्या पाई जाती है, हाइलाइट की जाएगी (Reek जेम द्वारा प्रदान की गई जानकारी के आधार पर)।

यदि Flog किसी समस्या की पहचान करता है, तो आप एक स्कोर देखेंगे। आप यह भी देखेंगे कि क्या Flay रिपोर्ट ने किसी डुप्लीकेट कोड का पता लगाया है।

RubyCritic के साथ अपने रूबी कोड गुणवत्ता को बढ़ाएं: दृश्य विश्लेषण और निरंतर सुधार

स्मेल्स रिपोर्ट

'Smells' पेज स्मेल टाइप, जहां स्मेल प्रकट होता है सटीक स्थान, और फिक्स स्टेटस दिखाता है।

जैसा कि पहले उल्लेख किया गया है, स्मेल्स Reek द्वारा पहचाने जाते हैं, और इस पेज पर सॉर्टिंग और फ़िल्टरिंग भी उपलब्ध हैं।

क्लास नाम पर क्लिक करने से आपके कोड विवरण के साथ एक पेज खुल जाएगा। आप स्मेल टाइप द्वारा समूहीकृत क्लासेस भी देख सकते हैं (यह 'Code' पेज से गायब है, जो केवल स्मेल्स की संख्या प्रदर्शित करता है)।

RubyCritic के साथ अपने रूबी कोड गुणवत्ता को बढ़ाएं: दृश्य विश्लेषण और निरंतर सुधार

कवरेज रिपोर्ट

अंत में, आप 'Coverage' रिपोर्ट में प्रत्येक क्लास के लिए क्लास वर्गीकरण और कवरेज का प्रतिशत देख सकते हैं। 'Code' और 'Smells' रिपोर्ट पर सूचियों के विपरीत, 'Coverage' में सूची जानकारी को सॉर्ट और फ़िल्टर करने की अनुमति नहीं देती।

आप केवल कोड कवरेज का प्रतिशत देख सकते हैं — कोई अतिरिक्त जानकारी उपलब्ध नहीं है।

RubyCritic के साथ अपने रूबी कोड गुणवत्ता को बढ़ाएं: दृश्य विश्लेषण और निरंतर सुधार

SimpleCov रिपोर्ट को एकीकृत करने से इस पेज पर अधिक मूल्य और उपयोगिता जुड़ सकती है। लेकिन किसी भी मामले में, 'Coverage' रिपोर्ट मदद कर सकती है यदि आपको अपने प्रोजेक्ट के टेस्ट कवरेज की जांच करने के लिए एक सरल रिपोर्ट की आवश्यकता है।

समापन

इस पोस्ट में, हमने आपके रूबी एप्लिकेशन के लिए RubyCritic के लाभों को संक्षेप में देखा, फिर इसकी आंतरिक निर्भरताओं में गोता लगाया: Reek, Flay, और Flog। फिर हमने RubyCritic की रिपोर्ट को पढ़ने और विश्लेषण करने का तरीका बताया।

अगले चरण के रूप में, पता लगाएं कि अपने पाइपलाइन में RubyCritic का उपयोग कैसे करें।

हैप्पी कोड रीफैक्टरिंग!

P.S. यदि आप रूबी मैजिक पोस्ट को प्रेस से बाहर आते ही पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और कभी भी एक भी पोस्ट मिस न करें!

RubyCritic के साथ अपने रूबी कोड गुणवत्ता को बढ़ाएं: दृश्य विश्लेषण और निरंतर सुधार

ब्रेना मोंटेइरो

अतिथि लेखक ब्रेना नए डेवलपर्स को मेंटर करने के बारे में भावुक एक टेक लीड हैं और उच्च-प्रदर्शन वाली टीमों को विकसित करने और नेतृत्व करने में अनुभवी हैं। उन्हें स्केलेबल APIs और क्लाउड सेवाओं के बीच इंटीग्रेशन बनाने में अनुभव है, वे इवोल्यूशनरी आर्किटेक्चर के बारे में उत्साही हैं, और एक एक्सटेंडेड रियलिटी (XR) अपरेंटिस हैं।

ब्रेना मोंटेइरो के सभी लेख


  1. सही बैकग्राउंड जॉब प्रोसेसर चुनें: डिलेड जॉब बनाम साइडकिक समझाया गया सही बैकग्राउंड जॉब प्रोसेसर चुनें: डिलेड जॉब बनाम साइडकिक समझाया गया

    अधिकांश एप्लिकेशन को मेलर्स, नियमित क्लीन-अप, या किसी अन्य समय लेने वाले ऑपरेशन के लिए बैकग्राउंड जॉब्स की आवश्यकता होती है जिसमें यूजर का उपस्थित होना आवश्यक नहीं है। रेल्स की दुनिया में कई जेम्स जॉब क्यू और बैकग्राउंड प्रोसेसिंग का समर्थन करते हैं - डिलेड जॉब और साइडकिक दो सबसे लोकप्रिय हैं। इस

  1. CSS से ब्लैक एंड व्हाइट इमेज कैसे बनाएं? CSS से ब्लैक एंड व्हाइट इमेज कैसे बनाएं?

    CSS से ब्लैक एंड व्हाइट इमेज बनाने का कोड निम्नलिखित है:उदाहरण<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> img{    margin: 20px; } img.normal{    margin-left: 30%; &nbs

  1. HTML DOM Input Datetime min गुणधर्म HTML DOM Input Datetime min गुणधर्म

    HTML DOM Input Datetime min गुणधर्म इनपुट डेटटाइम के min विशेषता को लौटाता/सेट करता है। वाक्य रचना (Syntax) निम्नलिखित वाक्य रचना है: स्ट्रिंग मान लौटाना inputDatetimeObject.min min को स्ट्रिंग मान पर सेट करना inputDatetimeObject.min = YYYY-MM-DDThh:mm:ssTZD स्ट्रिंग मान (String Values) यहाँ YY