Transcript
00:00:00यह Fallo है, जो TypeScript और JavaScript के लिए एक कोड-आधारित इंटेलिजेंस टूल है जो डेड कोड, डुप्लिकेशन, अनावश्यक जटिलता और बहुत कुछ के लिए आपके पूरे कोडबेस का विश्लेषण करता है।
00:00:10इसका मतलब है कि अपने एजेंटों को खराब कोड शिप करने से रोकने के लिए आपको NIP, JSC, PD और ESLint के संयोजन का उपयोग करने की आवश्यकता नहीं है।
00:00:17यह Rust में बना है और 90 से अधिक प्लगइन्स का समर्थन करता है, जिसका अर्थ है कि यह अधिकांश फ्रेमवर्क और लोकप्रिय पैकेज के साथ तुरंत काम करेगा।
00:00:23लेकिन तथ्य यह है कि यह केवल JavaScript और TypeScript का समर्थन करता है, इसे AI-सहायता प्राप्त कोडर्स के लिए कम आकर्षक बनाता है।
00:00:29सब्सक्राइब बटन दबाएं और आइए पता लगाते हैं।
00:00:30तो यहाँ एक प्रोजेक्ट है जिस पर मैं काम कर रहा हूँ जो वीडियो और इमेज में एक सिनेमैटिक फिल्म लुक जोड़ता है।
00:00:39इसे ज्यादातर क्लॉड कोड (Claude Code) के साथ बनाया गया है, इसलिए इसमें कुछ हद तक AI का पुट होगा।
00:00:43इस प्रोजेक्ट में एक नई सुविधा के लिए यहाँ एक PR भी है, जिसके बारे में मैं बाद में बात करूँगा, बशर्ते GitHub इसे गलती से गायब न कर दे।
00:00:51तो शुरू करने के लिए, मैं BunX का उपयोग करके 'summary' फ्लैग के साथ Fallo चलाने जा रहा हूँ, जिसका अर्थ है कि मुझे इसे इंस्टॉल करने की आवश्यकता नहीं है।
00:00:56और यह मेरे प्रोजेक्ट का एक स्नैपशॉट देता है, जिसमें डेड कोड सारांश, डुप्लिकेशन और स्वास्थ्य जटिलता का सारांश दिखाया गया है।
00:01:02और यदि हम गिट स्टेटस (git status) की जाँच करते हैं, तो यह एक नई .fallo निर्देशिका जोड़ता है जिसमें कैश होता है।
00:01:07इसका मतलब है कि इस कमांड के बाद के रन तेज़ होंगे और इसमें स्नैपशॉट और किसी भी प्लगइन की जानकारी होगी।
00:01:12अब, आपने यहाँ ध्यान दिया होगा कि स्वास्थ्य (health) थ्रेशोल्ड से 41 ऊपर है।
00:01:16अब, इसका क्या मतलब है?
00:01:17खैर, Fallo स्वास्थ्य स्कोर की गणना साइक्लोमैटिक जटिलता और संज्ञानात्मक जटिलता का पता लगाकर की जाती है।
00:01:24और यह जटिलता घनत्व की गणना करने के लिए कुछ सूत्रों का उपयोग करता है।
00:01:27और यहाँ नीचे, इस सब का उपयोग मेंटेनबिलिटी इंडेक्स का पता लगाने के लिए किया जाता है, जो वह स्कोर है जिसे हम यहाँ देखते हैं।
00:01:33तो इस स्कोर के आधार पर, इसने पता लगाया है कि मेरी 41 फ़ाइलों को रिफैक्टर करने की आवश्यकता है।
00:01:38यहाँ से, हम किसी विशिष्ट क्षेत्र के बारे में विस्तृत रिपोर्ट प्राप्त करने के लिए इनमें से कोई भी कमांड चला सकते हैं।
00:01:43तो अगर मैं स्वास्थ्य पर ध्यान केंद्रित करना चाहता हूँ, तो हम यह कमांड चला सकते हैं।
00:01:46और कुछ समय बाद, यह उन सभी फ़ाइलों को सूचीबद्ध करता है जिनमें विभिन्न स्वास्थ्य समस्याएँ हैं।
00:01:49ध्यान दें, यदि आप जानना चाहते हैं कि CRAP का क्या अर्थ है, तो यह "change risk anti-patterns" का संक्षिप्त रूप है,
00:01:55जिसके बारे में आप दस्तावेज़ों में सब कुछ सीख सकते हैं।
00:01:57लेकिन विवरण का यह स्तर किसी एजेंट के लिए पालन करना और यह जानना बहुत आसान है कि क्या ठीक करना है।
00:02:00वास्तव में, मैं कहूँगा कि डुप्लिकेशन का पालन करना बहुत आसान है क्योंकि यह सटीक फ़ाइल और विशिष्ट लाइन नंबर देता है।
00:02:06तो हम अभी के लिए उसी पर टिके रहेंगे।
00:02:07और यदि हम चाहें, तो हम कुछ पैटर्न या डिपेंडेंसी के बारे में Fallo को जानकारी देने के लिए एक Fallo कॉन्फ़िगरेशन फ़ाइल जोड़ सकते हैं जिन्हें आप अनदेखा करना चाहते हैं,
00:02:14साथ ही कुछ कस्टम डुप्लिकेशन सेटिंग्स, स्वास्थ्य सेटिंग्स और बाउंड्रीज़ जोड़ना,
00:02:18जो यह घोषित करने का एक बहुत ही शानदार तरीका है कि कौन सी डायरेक्टरी किन अन्य डायरेक्टरी से इम्पोर्ट कर सकती हैं।
00:02:23लेकिन यह सब मेरी ज़रूरतों के लिए बहुत जटिल है, इसलिए अभी के लिए हम डिफ़ॉल्ट सेटिंग्स के साथ ही रहेंगे।
00:02:27अब यहाँ से, हम 'fallo fix' कमांड चला सकते हैं या हम यह देखने के लिए 'dry run' फ्लैग जोड़ सकते हैं कि यह वास्तव में क्या करने वाला है,
00:02:32जो कि सभी ठीक होने योग्य समस्याओं को हल करने का प्रयास करना है।
00:02:35और आप यहाँ देख सकते हैं कि यह बहुत सारे एक्सपोर्ट्स (exports) को हटाने वाला है।
00:02:38लेकिन मैं वास्तव में ऑटोमैटिक फिक्स चलाने के लिए Fallo पर भरोसा नहीं करता क्योंकि उसके पास मेरे कोड का अधिक संदर्भ नहीं है,
00:02:43कि प्रत्येक फ़ंक्शन क्या करता है और सब कुछ एक साथ कैसे काम करता है।
00:02:46इसलिए 'fix' फ्लैग का उपयोग करने के बजाय, मैं Fallo को अपने एजेंट से जोड़ने जा रहा हूँ,
00:02:49जो आप MCP सर्वर का उपयोग करके या VS कोड प्लगइन का उपयोग करके कर सकते हैं, जो मुझे लगता है कि Cursor के साथ काम करेगा।
00:02:55लेकिन मैं चीज़ों को सरल रखूँगा और बस Fallo स्किल इंस्टॉल करूँगा, जिसमें कुछ सुरक्षा नियम, एजेंट नियम और कुछ सामान्य गलतियाँ शामिल हैं।
00:03:03तो स्किल इंस्टॉल होने के साथ, मैं क्लॉड कोड चलाने जा रहा हूँ और मैं इसे एक प्रॉम्प्ट दूँगा कि यह समझने के लिए इस प्रोजेक्ट का अध्ययन करें कि कोड कैसे काम करता है,
00:03:10फिर डुप्लिकेट कोड से निपटने के लिए Fallo चलाएँ, यह सुनिश्चित करते हुए कि इसे हटाने से मुख्य कार्यक्षमता न टूटे।
00:03:16और जब आप कर लें, तो परिवर्तनों को एक फीचर ब्रांच में डालें और यह सुनिश्चित करने के लिए टेस्ट चलाएँ कि ऐप उम्मीद के मुताबिक काम कर रहा है।
00:03:22तो हम यहाँ देख सकते हैं कि यह Fallo स्किल लोड करता है।
00:03:24फिर यह 'fallo dupes' कमांड चलाता है और JSON एक्सपोर्ट करने का फॉर्मेट प्राप्त करता है, जो मशीन के अनुकूल फॉर्मेट है।
00:03:29और लगभग चार मिनट के बाद, क्लॉड ने Fallo द्वारा सुझाई गई सभी फ़ाइलों के बजाय तीन फ़ाइलों को ठीक करना समाप्त कर लिया है,
00:03:34मुख्य रूप से क्योंकि बाकी टेस्ट फ़ाइलें हैं, जिनमें कभी-कभी डुप्लिकेट कोड होना चाहिए।
00:03:39मैंने इसे एक PR बनाने के लिए भी कहा और अगर हम इसे देखें, तो इसने कोड की 54 लाइनें जोड़ी हैं और 43 हटाई हैं।
00:03:46लेकिन ऐसा इसलिए है क्योंकि मैंने इसे एक Fallo कॉन्फ़िगरेशन फ़ाइल जोड़ने के लिए कहा है, जो भविष्य की रिपोर्टों में सभी टेस्ट फ़ाइलों को अनदेखा करने के लिए लगभग 20 लाइनों की है।
00:03:54और निश्चित रूप से, हमें जटिलता के मुद्दों या किसी भी डेड कोड को ठीक करने के लिए क्लॉड कोड या किसी अन्य एजेंट का उपयोग करके इस दिशा में आगे बढ़ना जारी रखना चाहिए।
00:04:00लेकिन Fallo PRs की समीक्षा भी कर सकता है।
00:04:02तो अगर हम उस PR को देखें जो मैंने आपको पहले दिखाया था, तो 'fallo audit' कमांड चलाने से मेन (main) ब्रांच के मुकाबले इस ब्रांच पर किसी भी समस्या की जाँच होगी ताकि हम केवल विशिष्ट मुद्दों को ही ठीक कर सकें।
00:04:12और यदि हम इसे किसी भिन्न ब्रांच पर आधारित करना चाहते हैं, तो हम बस 'base' फ्लैग का उपयोग कर सकते हैं।
00:04:16लेकिन अगर हम क्लॉड को हर बार Fallo का उपयोग करने के लिए बार-बार प्रॉम्प्ट नहीं करना चाहते हैं, तो हम यह 'setup hooks' कमांड चला सकते हैं, जो Fallo के लिए कुछ क्लॉड कोड हुक्स जनरेट करेगा।
00:04:24Fallo PR एनोटेशन के साथ GitHub एक्शन के रूप में भी चल सकता है।
00:04:28यह वर्कस्पेस का समर्थन करता है।
00:04:30यह हेल्थ बैज एक्सपोर्ट कर सकता है और बेसलाइन का समर्थन करता है, जिसका अर्थ है कि वर्तमान समस्याओं को समय के साथ ठीक किया जा सकता है।
00:04:35और CI केवल नए मुद्दों को पकड़ता है, जो बहुत सारे मुद्दों वाले बड़े प्रोजेक्ट को ठीक करने के लिए बहुत अच्छा है।
00:04:41मूल रूप से इसमें बहुत सारी सुविधाएँ हैं, लेकिन उनमें से लगभग सभी स्टेटिक कोड एनालिसिस हैं, जिसका अर्थ है कि यह वास्तव में आपके फ़ंक्शन को निष्पादित नहीं करता है।
00:04:49यदि आप कुछ ऐसा चाहते हैं जो ऐसा करे, तो Fallo "रनटाइम इंटेलिजेंस" नामक चीज़ का समर्थन करता है जो आपको बताता है कि जब प्रोडक्शन में आपका ऐप वास्तविक ट्रैफ़िक का सामना करता है तो कौन से फ़ंक्शन ट्रिगर हो रहे हैं।
00:04:59यह V8 रनटाइम कवरेज का उपयोग करके ऐसा करता है, और एक साइडकार के माध्यम से परिणामों को मौजूदा हेल्थ रिपोर्ट में मिलाता है जिसे स्थानीय रूप से चलाया जा सकता है या कहीं भी तैनात किया जा सकता है।
00:05:08लेकिन यह, निश्चित रूप से, एक पेड फीचर है, जो एक तरह से समझ में आता है।
00:05:11कुल मिलाकर, Fallo एक बेहतरीन टूल है जिसका मैं बहुत अधिक उपयोग करने जा रहा हूँ, भले ही मुझे लगता है कि इसमें बहुत सारी सुविधाएँ हैं और यह केवल JavaScript टेक स्टैक का समर्थन करता है।
00:05:19हालाँकि अन्य भाषाओं के अपने टूल हैं, मुझे यकीन नहीं है कि वे सब कुछ एक साथ उतनी अच्छी तरह से जोड़ते हैं जितना Fallo करता है, और मुझे लगता है कि इसके निर्माता बार्ट (Bart) ने इस टूल को बनाने में अच्छा काम किया है, जो वास्तव में ग्राफ-आधारित विश्लेषण शुरू होने से पहले सिमेंटिक विश्लेषण और मॉड्यूल रिज़ॉल्यूशन को पार्स करने के लिए OXC का उपयोग करता है।
00:05:36तो मूल रूप से, यह कभी भी JavaScript को नहीं छोड़ेगा, और मुझे यकीन है कि यह Evan You को बहुत खुश करेगा, JavaScript वाला हिस्सा नहीं, बल्कि OXC वाला हिस्सा, क्योंकि यह एक ऐसा टूल है जिसे वह void zero के साथ फंड कर रहे हैं।
00:05:46Evan You की बात करें तो, यदि आप हमें void zero के बारे में उनसे पूछताछ करते हुए सुनना चाहते हैं, साथ ही क्या रिएक्ट सर्वर कंपोनेंट्स एक अच्छा विचार था और बीच की हर चीज़ के बारे में, तो इस वीडियो को देखें, जो एक घंटे का पॉडकास्ट है, और मुझे लगता है कि यह हमारे द्वारा किए गए पॉडकास्ट में से मेरे पसंदीदा में से एक है।