सामग्री पर जाएँ
cd /languages
  • क्रॉस-प्लेटफ़ॉर्म UI
  • प्रोग्रामिंग
  • AST और सिंबल सपोर्ट

Maguyva में Dart: Flutter और Dart ऐप के लिए कोड ग्राफ़

Maguyva, Dart को AST, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट Flutter और Dart कोड में क्लास, मिक्सिन, एक्सटेंशन और कंस्ट्रक्टर को ट्रेस कर सकें।

Dart सतही AI टूल को कहाँ उलझाती है

Dart एक टाइप को कई संरचनाओं में फैला देती है। एक क्लास एक बेस क्लास से इनहेरिट कर सकती है, कई इंटरफ़ेस लागू कर सकती है और with के ज़रिए मिक्सिन से व्यवहार मिला सकती है। एक्सटेंशन मेथड कहीं और घोषित टाइप में सदस्य जोड़ते हैं, और नामित कंस्ट्रक्टर तथा factory कंस्ट्रक्टर यह छिपा देते हैं कि असल में कौन-सी क्लास बनाई जा रही है। टेक्स्ट सर्च नाम ढूँढ लेता है, पर उनके पीछे की संरचना नहीं।

Maguyva वह संरचना एजेंट को देता है, ताकि वह किसी बदलाव को विजेट से उस सर्विस तक ट्रेस कर सके जिस पर वह निर्भर है।

Maguyva, Dart से क्या निकालता है

Maguyva .dart फ़ाइलों को कवर करता है। क्लास, मिक्सिन और एक्सटेंशन टाइप के रूप में निकाले जाते हैं। structural_search में functions प्रीसेट फ़ंक्शन, मेथड, लोकल फ़ंक्शन, लैम्ब्डा और जनरेटिव, const तथा factory कंस्ट्रक्टर को कवर करता है। सिग्नेचर वैकल्पिक पोज़िशनल और नामित पैरामीटर समूहों तथा static सदस्यों को दर्ज करते हैं; परिभाषा के नामों से ? और ! प्रत्यय हटा दिए जाते हैं।

इम्पोर्ट import, part और library निर्देशों को सामान्यीकृत करते हैं और show, hide तथा as क्लॉज़ हटा देते हैं। इम्पोर्ट प्रीफ़िक्स के ज़रिए होने वाला कॉल, जैसे import 'package:http/http.dart' as http के बाद http.get, ग्राफ़ में बना रहता है।

रिसीवर टाइपिंग पैरामीटर, घोषित टाइप वाले और इनिशियलाइज़ किए गए वेरिएबल, गेटर, और लिस्ट, सेट तथा इटरेबल पर for-in लूप को ट्रैक करती है; var और dynamic को अनुमानित टाइप माना जाता है। इनहेरिट किए गए सदस्यों को रिज़ॉल्व करते समय extends, implements और with क्लॉज़ का भी पालन किया जाता है। ग्राफ़ इंस्टैंशिएशन, टाइप रेफ़रेंस, रीड और राइट, और एक्सेप्शन एज भी दर्ज करता है।

एजेंट प्रॉम्प्ट के उदाहरण

  • “CartRepository.addItem को कौन कॉल करता है, और किन विजेट से?” (find_symbol, फिर dependency_search इनकमिंग)
  • “कौन-सी क्लास PaymentGateway को लागू करती हैं?” (dependency_search)
  • “ट्रेस करो कि चेकआउट बटन पेमेंट API तक कैसे पहुँचता है।” (get_task_context)

ज्ञात सीमाएँ

  • Dart की कोर लाइब्रेरी के लगभग 200 नाम संबंधों से फ़िल्टर किए जाते हैं, जिनमें map, where और forEach जैसे कलेक्शन हेल्पर, then और listen जैसे Future और Stream मेथड, और dart: लाइब्रेरी शामिल हैं। इनके लिए text_pattern_search इस्तेमाल करें।
  • Dart के सिग्नेचर नोड बॉडी को सिबलिंग नोड के रूप में रखते हैं, इसलिए structural_search के नतीजों में कोई लोकल फ़ंक्शन या लैम्ब्डा अपने युक्त कॉलेबल पर चढ़ सकता है, और गेटर तथा सेटर मेथड सिग्नेचर के रूप में दिखते हैं।

अगले कदम

क्विकस्टार्ट से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स कम्पैटिबिलिटी पेज पर देखें। दूसरे मोबाइल कोडबेस के लिए Kotlin गाइड और Swift गाइड पढ़ें।

सबसे उपयुक्त

  • > ऐसे Flutter ऐप जिनमें विजेट, स्टेट क्लास, रिपॉज़िटरी और सर्विस कई फ़ाइलों में एक-दूसरे को कॉल करते हैं।
  • > ऐसे Dart पैकेज जो कहीं और घोषित टाइप में मिक्सिन और एक्सटेंशन मेथड के ज़रिए व्यवहार जोड़ते हैं।
  • > सर्वर-साइड और कमांड-लाइन Dart कोड जो किसी Flutter क्लाइंट के साथ मॉडल साझा करता है।

एजेंट वर्कफ़्लो

  • > किसी रिपॉज़िटरी या सर्विस मेथड का API बदलने से पहले उसके सभी कॉलर ढूँढना।
  • > किसी इंटरफ़ेस में नया सदस्य जोड़ने से पहले उसे लागू करने वाली क्लास की सूची बनाना।
  • > यह ट्रेस करना कि विजेट पर एक टैप नेटवर्क लेयर तक कैसे पहुँचता है।

इंजन विवरण

  • > Dart सपोर्ट `.dart` फ़ाइलों को कवर करता है। क्लास, मिक्सिन और एक्सटेंशन टाइप हैं; कंस्ट्रक्टर में जनरेटिव, `const` और `factory` रूप शामिल हैं।
  • > इम्पोर्ट `import`, `part` और `library` निर्देशों को सामान्यीकृत करते हैं; इम्पोर्ट प्रीफ़िक्स के ज़रिए होने वाले कॉल ग्राफ़ में बने रहते हैं।
  • > रिसीवर टाइपिंग पैरामीटर, वेरिएबल, गेटर और `for`-`in` लूप को ट्रैक करती है; लगभग 200 कोर लाइब्रेरी नाम संबंधों से फ़िल्टर किए जाते हैं।

उपयोगी MCP एंट्री पॉइंट

  • find_symbol

    किसी विजेट, रिपॉज़िटरी या सर्विस क्लास के लिए इस्तेमाल करें जब आपको परिभाषा और रेफ़रेंस चाहिए।

  • dependency_search

    API बदलने से पहले कॉलर और लागू करने वालों को देखने के लिए किसी रिपॉज़िटरी मेथड या इंटरफ़ेस पर इनकमिंग ट्रैवर्सल इस्तेमाल करें।

  • get_task_context

    "ट्रेस करो कि चेकआउट बटन पेमेंट API तक कैसे पहुँचता है" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।