2013-02-24 29 views
7

तो मैंने पाया कि nice video on Clang tooling ... और यह आश्चर्य नहीं कर सका: क्या पूर्ण परियोजना सुंदरता और सफाई (समान रूप से सी # resharper) के लिए कोई नमूना कोडबेस/संकलित टूलिंग सूट है? प्रोजेक्ट स्केल पर कोड बनाने जैसे कोड: लाइन अंत में अतिरिक्त स्थान, सदस्य/वर्ग नामकरण का एकीकरण, {} ब्रैकेट्स के तरीके if आदि के बाद रखा गया है?क्या सी ++ रिफैक्टरिंग पैटर्न क्लैंग टूल्स के सेट के रूप में लागू किए गए हैं?

+0

मेरा अनुमान है कि यह एक्सकोड का अगला संस्करण होगा। – Carl

उत्तर

7

क्लैंग का libtooling काफी नया है इसलिए वर्तमान में इसके आधार पर बहुत अधिक नहीं है।

इसके अलावा मेरे अनुभव में यह लिंक करने के लिए एक दर्द है (llvm-config का कोई clang संस्करण नहीं है और tutorials में देवताओं को लगता है कि लोग अच्छी तरह से अलग परियोजनाओं के बजाए पूर्ण क्लैंग रेपो के अंदर अपने उपकरण का निर्माण करेंगे। उबंटू बजना का निर्माण करती है। केवल एक स्थिर ए के रूप में libtooling, कोई .so शामिल सरकारी LLVM हर रात को उबंटू के लिए बनाता है बिल्कुल स्थिर libclangTooling.a शामिल करने के लिए नहीं है।

है include-what-you-use जो दूर करने के लिए डिज़ाइन किया गया है अप्रयुक्त हेडर फाइलें

clReflect है जो प्रतिबिंब बाइंडिंग उत्पन्न करता है। (सुनिश्चित नहीं है कि यह वास्तव में libtooling का उपयोग करता है या सिर्फ libclang, लेकिन यह एक ही तरह की चीज है।)

refactorial भी है जो कुछ अन्य परिचालनों का समर्थन करता है।

कुछ उपकरण part of clang के रूप में शामिल हैं। सबसे विशेष रूप से ए c++11 migration tool। मॉड्यूल के लिए एक उपकरण भी है (सी ++ के भविष्य के संस्करण के लिए एक सुविधा पर काम किया जा रहा है)।

यह सामान बंद होने के बाद बहुत उपयोगी और शक्तिशाली होना चाहिए।

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

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

यह भी अच्छा होगा, 'संपादित करें जैसा आप संपादित करें', एएसटीमैचर आधारित टूल, या कुछ सरल पुन: फैक्टरिंग स्क्रिप्टिंग भाषा बाइंडिंग।

संपादित करें: अब कोड शैली स्वरूपण और (3.4 के रूप में) विम एकीकरण के लिए clang-format.py स्क्रिप्ट के लिए क्लैंग-प्रारूप भी है। क्लैंग-लागू-प्रतिस्थापन "that finds files containing serialized Replacements and applies those changes after deduplication and detecting conflicts."

this video पर यह देखने लायक हो सकता है कि इनमें से कुछ चीजें डेमो हो गई हैं।

0

एक क्लैंग एएसटीमैचर "आरईपीएल" के लिए नवीनतम पेड़ में क्लैंग-क्वेरी देखें।

इसके अलावा विम के लिए विम-क्लैंग-प्रारूप देखें जो अब पाइथन लिपि की आवश्यकता के बिना सीधे निष्पादन योग्य का उपयोग करता है।