AppCode 2019.2: स्विफ्ट 5.1, परीक्षणों द्वारा कोड कवरेज का विश्लेषण, असंतुष्ट कोड का प्रदर्शन और बहुत कुछ

ज्योतिषियों ने JetBrains में एक सप्ताह की रिलीज़ की घोषणा की है, ब्लॉग पोस्ट की संख्या तीन गुना हो गई है! वास्तव में, यह एक रिलीज़ पोस्ट भी है, इसलिए यदि आपने ईएपी में भाग लिया, तो आप पहले से ही सब कुछ जानते हैं।


यदि नहीं, तो कटौती की जांच करना सुनिश्चित करें, क्योंकि इस रिलीज में हमारे पास न केवल कोड कवरेज का विश्लेषण है, बल्कि परीक्षण के लिए और असंतुष्ट कोड का प्रदर्शन है, लेकिन रूबी के लिए डीएसएल समर्थन और अन्य बहुत सी दिलचस्प चीजें भी हैं!


कवरेज के साथ चलाएं



तीव्र


भाषा का समर्थन


स्विफ्ट 5.1 का समर्थन करना शुरू किया:


  • SE-0242 : सदस्यवार इनिशियलाइज़र के लिए डिफ़ॉल्ट मानों का संश्लेषण करें।
  • SE-0254 : स्थैतिक और वर्ग सदस्यता।
  • SE-0068 : कक्षा सदस्यों और मूल्य प्रकारों के लिए Self का विस्तार करना।
  • SE-0260 : स्टेबल एबीआई के लिए लाइब्रेरी इवोल्यूशन।
  • एसई -0258 : संपत्ति आवरण

इस प्रक्रिया में, तत्परता की डिग्री यहाँ देखी जा सकती है


कोड तह


तह बंद कर दिया:


बंद तह


बैकलाइट


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


कीवर्ड


गणना तत्व पीढ़ी


हम क्रिएट फ्रॉम यूज़ से स्कोप का विस्तार करना जारी रखते हैं: अब आप कोड में इसके उपयोग से एक एन्यूमरेशन एलिमेंट बना सकते हैं, बस scope द्वारा:


उपयोग से बनाएं


उपयोग खोज


AppCode में उपयोग के लिए खोज विशिष्ट कोड निर्माण (चर, वर्ग, कार्य, वर्ग विधि, आदि) के लिए दिखता है - यह आपको पूर्ण-पाठ की तुलना में खोज क्षेत्र को बहुत कम करने की अनुमति देता है। हाल तक तक, स्विफ्ट के लिए हमने केवल वही प्रदर्शित किया जहां एक विशेष डिजाइन का उपयोग किया जाता है। 2019.2 में, हमने प्रकारों के उपयोग का एक समूह लागू किया है, इसलिए अब हम जल्दी से यह भी समझ सकते हैं कि हम एक चर, फ़ंक्शन या श्रेणी का उपयोग कैसे करते हैं:


Usages का पता लगाएं


कोड की लाइनों को विलय करना


कुछ खास नहीं है, बस अब आप जॉइन लाइन्स () ⌃⇧J ) का उपयोग करके वेरिएबल के डिक्लेरेशन और इनिशियलाइज़ेशन को गोंद कर सकते हैं।


लाइनों में शामिल हों


ऑटो आयात


ऐसी एक बिल्ड सिस्टम है - BUCK । डिफ़ॉल्ट रूप से BUCK बिल्ड सिस्टम हेडर मैप्स का उपयोग करता है, जिसका समर्थन हमने एक साल पहले जोड़ा था, लेकिन इसे ऑटो आयात में फेंकने का समय नहीं है। नतीजतन, a दबाने के बाद, हेडर के लिए एक लंबा रास्ता डाला गया था, जो बिल्कुल अनावश्यक है। अब ऐसा नहीं होता है, अब सब कुछ सही है।


डिबगिंग


डिसबल्ड कोड डिस्प्ले


CLION के सहकर्मियों ने 2019.1 के संस्करण में LLDB के लिए असंतुष्ट कोड की मैपिंग की, और हमने इस रिलीज़ में इसका पुनः उपयोग किया:


बेचैनी का दृश्य


ऑटो पूरा करना


मूल रूप से CLion में बनाई गई एक और उपयोगी चीज एलएलडीबी कंसोल में डीबगर कमांड का ऑटोकॉमप्लेक्शन है जिसे as (एक नियमित कंसोल में ही) दबाकर किया जाता है:


एलएलडीबी आज्ञाओं को पूरा करता है


टेस्ट कवरेज विश्लेषण कोड


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


कवरेज के साथ चलाएं


संपादक में बाईं ओर कवरेज परिणाम हैं:


कवरेज के परिणाम


रंग संकेतक पर क्लिक करके, कोड के इस भाग में कॉल की संख्या और उपयोगी कार्यों के साथ एक प्लेट प्रदर्शित की जाती है:


गिनती मारो


कवरेज आँकड़े प्रोजेक्ट दृश्य में, और एक अलग विंडो में अधिक विस्तार से प्रदर्शित किए जाते हैं:


Toolwindows


अनुक्रमण के दौरान बनाएँ, चलाएँ, डीबग करें, और परीक्षण करें


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


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


अनुक्रमण के दौरान बिल्ड, रन, डीबग और टेस्ट


एकीकरण


TextMate प्लगइन


अक्सर उन्हें कुछ भाषा के लिए समर्थन जोड़ने के लिए कहा जाता है जो AppCode के लिए मुख्य नहीं है। कभी-कभी हम ऐसा करते हैं यदि हम समझते हैं कि बहुत से उपयोगकर्ताओं को वास्तव में इसकी आवश्यकता है, तो कुछ बिंदु पर हमने वेबस्टोर का एक हिस्सा खुद को खींच लिया, ताकि रिएक्टिव नेटिव और फोनगैप पर डेवलपर्स HTML / CSS / जावास्क्रिप्ट के साथ काम करने में सहज हों।


फिर मार्कडाउन के लिए प्लगइन आया, क्योंकि किसी भी README को आसानी से और जल्दी से संपादित करने में सक्षम होने की आवश्यकता है। उनके सहयोगियों में से एक द्वारा बनाए गए AppleScript के लिए भी एक प्लग-इन है क्योंकि वह भाषा समर्थन लिखने में रुचि रखता था।


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


इस रिलीज़ में, WebStorm के सहयोगियों ने डिफ़ॉल्ट इंस्टॉलेशन में शामिल किया, जो TextMate बंडलों के समर्थन के साथ प्लग-इन है, जो भाषाओं का एक गुच्छा एक सरल हाइलाइट और ऑटो-पूर्णता प्रदान करता है। हमने उनके उदाहरण का अनुसरण किया, और अब हमारे पास यह भी है:


टेक्स्टमैट बंडल्स प्लगिन


इन बंडलों की ओर से फास्टलेन के समर्थन में कुछ विरोधाभासों के कारण, रूबी डीएसएल के लिए कॉन्फ़िगरेशन सिद्धांत समान रहता है (हालांकि, आप इस स्थिति को ठीक करने में मदद कर सकते हैं )।


शेल स्क्रिप्ट प्लगिन


परियोजनाओं में लिपियाँ सामान्य हैं, इसलिए हमने उन्हें संपादित करने के लिए समर्थन शामिल किया है:


शेल स्क्रिप्ट प्लगइन


कमिट विंडो


अधिक सटीक रूप से, अब कोई अलग विंडो नहीं है - अब यह स्थानीय परिवर्तन टैब का हिस्सा बन गया है :


कमिट विंडो


यह अंत है। सभी प्रश्नों और सुझावों को टिप्पणियों में यहीं लिखें - हमें जवाब देने में खुशी होगी!


AppCode टीम

Source: https://habr.com/ru/post/hi461949/


All Articles