इस प्रोजेक्ट के बारे में
AutoFFF एक Python-आधारित उपयोगिता है जो C API हेडर फ़ालों के लिए FFF (Fake Functions Framework) नकली फ़ंक्शन परिाषाएँ स्वतः उत्पन्न करने के लिए डिज़ाइन की गई है, जो एम्बेडेड C यूनिट परीक्षण में एक आम समस्या का समाधान करती है। यह जिस मुख्य समस्या का समाधान करता है वह यह है कि एम्बेडेड C कोड का होस्ट मशीन पर परीक्षण अक्सर असंभव होता है, क्योंकि होस्ट आर्किटेक्चर लक्ष्य प्लेटफ़ॉर्म से भिन्न होता है, और एम्बेडेड वातावरण में आमतौर पर डायनामिक लिंकिंग का समर्थन नहीं होता, जबकि C में अंतर्निहित रनटाइम रि्लेक्शन क्षमताए नहीं होतीं जो परीक्षण के दौरान कोड को रनटाइम पर संचालित कर सकें। लक्ष्य प्लेटफ़ॉर्म API को नकली कार्यान्वयन के विुद्ध परीक्षणाधीन कोड को लिंक करके नकली बनाना इसका समाधान करता है, लेकिन API फ़ंक्शनों के लिए नकली परिभाषाएँ मैन्युअल रूप से लिखना थकाऊ, श्रम-गहन और त्रुटि-प्रवण होता है, और मैन्युअल रूप से अनुरक्षित टेस्ट हेडर मूल API के विकसित होने पर 'कोड रॉट' के प्रति संवेदनशील होते हैं। AutoFFF इस प्रक्रिया को स्वचालित करता है: यह C API हेडर फ़ाइलों को पार्स करता है और FFF-संगत नकली परिभाषाओं वाले तैयार-उपयोग टेस्ट हेडर उत्पन्न करता है। यह 'रैपिंग' नकली-करण दर्शन का पालन करता है: उत्पन्न टेस्ट हेडर मूल API हेडर को शामिल करते हैं ताकि उसके सभी प्रकार, चर और फ़ंक्शन घोषणाएँ विरासत में मिलें, और केवल आवश्यक नकली परिभाषाए जोड़ते हैं। यह दृष्टिकोण वैकल्पिक 'बैनिंग' रणनीति की तुलना में कहीं अधिक अनुरक्षणीय है, जिसमें सभी API तत्वों को मैन्युअल रूप से पुनः घोषित करना पड़ता है और मूल हेडरों से तालमेल बिगड़ने की अधिक संभावना होती है। यह टूल हेडर फ़ालों के अंदर सीधे परिभाषित फ़ंक्शनों के लिए एक अंतर्निहित वर्कअराउंड शामिल करता है, जो सामान्यतः नकली बनाए जाने पर पुनर्परिभाषा त्रुटियाँ उत्पन्न करते हैं। यह वर्कअराउंड मैक्रो री-रूटिंग का उपयोग करके मूल इन-हेडर फ़ंक्शन के कॉल को उत्पन्न नकली की ओर पुनर्िर्देशित करता है, बशर्ते टेस्ट फ़ाइलों में टेस्ट हेडर परीक्षणाधीन कोड से पहले शामिल किया गया हो। AutoFFF सख्त include नीतियों वाली लाइब्रेरीज़ (जैसे FreeRTOS या CMSIS) के साथ काम करने का समर्थन करता है, कमांड-लाइन विकल्पों के माध्यम से पार्सिंग के दौरान आवश्यक हेडर इंजेक्ट करने या प्रीप्रोसेसर मैक्रो परिभाषित करने के लिए। यह कई एकीकरण विकल्प प्रदान करता है: इसे स्टैंडअलोन कमांड-लाइन मॉड्यूल के रूप में चलाया जा सकता है, कस्टम स्क्रिप्ट में Python पैकेज के रूप में उपयोग किया जा सकता है, या प्रदान की गई उदाहरण Makefiles के माध्यम से Make जैसी बिल्ड प्रणालियों में एकीकृत किया जा सकता है। यह दो जनरेटर मोड प्रदान करता है: BareFakeGenerator केवल कच्ची FFF मैक्रो परिभाषाएँ आउटपुट करता है, बिना हेडर बॉयलरप्लेट के, उन उपयोगकर्ताओं के लिए जो कस्टम प्रोसेसिंग जोड़ना चाहते हैं, जबकि SimpleFakeGenerator न्यूनतम व्यवहार्य, संकलन-योग्य टेस्ट हेडर तैयार करता है, जिनमें include गार्ड और आवश्यक includes शामिल होते हैं। AutoFFF MIT लाइसेंस के अंतर्गत वितरित है, PyPI के माध्यम से उपलब्ध है, और C पार्सिंग के लिए pycparser प्रोजेक्ट के fake_libc_include हेडर संग्रह की आवश्यकता होती है, जो pip रिलीज़ के साथ बंडल नहीं है और इसे pycparser रिपॉज़िटरी से अलग से प्राप्त करना होगा।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.