वहाँ एक काम कर रहे सी + + उपकरण refactoring है? [बन्द है]


161

किसी को भी सी + + के लिए एक पूरी तरह से चित्रित रीफैक्टरिंग टूल पता है जो बड़े कोड बेस (कुछ 100.000 लाइनों) के साथ मज़बूती से काम करता है?

मैंने कोशिश की कि जो भी मैं पिछले सालों में बार-बार पा सकूं: स्लीकडिट, एक्लिप्स सीडीटी। वे सभी प्रयोग करने योग्य नहीं थे।

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

"विजुअल असिस्ट X" में बहुत अधिक पूर्ण ऑटोकम्प्लीटेशन आदि जैसी अच्छी विशेषताएं हैं, लेकिन यह बहुत अधिक चंचलता की ओर जाता है और कुछ बिंदुओं पर धीमा हो जाता है।

मेरी राय से इसलिए उत्तर है: "नहीं, C ++ के लिए कोई उत्पादन तैयार करने वाला उपकरण नहीं है"

UPDATE मार्च 2015 के रूप में hdoghmens उत्तर के लिए आज मैंने C ++ के लिए Resharper की कोशिश की। उसका लिंक https://www.jetbrains.com/resharper/ C ++ के बारे में कुछ नहीं कहता है। लेकिन मुझे एक साल से भी अधिक समय पहले यहां घोषित किया गया Resharper C ++ मिला:

https://www.jetbrains.com/resharper/features/cpp.html

मैंने 20MB के कोड बेस का उपयोग करके इसे VC2010 के साथ आज़माया।

टेस्ट 1: एक्सट्रैक्ट मेथड: रिजल्ट अपवाद में होता है। कोई स्रोत कोड नहीं बदला गया।

टेस्ट 2: विभिन्न स्रोत के साथ निकालने की विधि: ठीक काम करती है

टेस्ट 3: निकाले गए फ़ंक्शन के हस्ताक्षर बदलें: टूटे सी ++ कोड में परिणाम:

bool myclass::do_work123(<unknown long Color>int& Filled*&, long, int&)

शायद यही कारण है कि C ++ इसकी मुख्य पृष्ठ पर सूचीबद्ध नहीं है।

मेरी राय से इस सवाल का जवाब अभी भी "नहीं" है


11
पसंदीदा यह एक। C ++ के साथ समस्या इसकी बहुत जटिल, संदर्भ-संवेदनशील वाक्य रचना है। वास्तव में पूर्ण स्रोत को पार्स करने के बिना, आप सुनिश्चित नहीं हो सकते हैं कि पहचानकर्ता का क्या मतलब है।
देवसर

इन्हें भी देखें: stackoverflow.com/questions/249827/… लेकिन इसके पास बहुत कुछ नहीं है
dmckee --- पूर्व-संचालक बिल्ली का बच्चा

4
ग्रहण वास्तव में बहुत अच्छी तरह से काम करता है, आपको बस इसे ग्रहण करने के लिए अधिक मेमोरी का उपयोग करने की अनुमति देने की आवश्यकता है।
n0rd

3
यदि आप अभी भी C ++ के लिए रिफ्लेक्टरिंग टूल्स की निगरानी कर रहे हैं, तो कृपया विचार करें कि हम JetBrains में वर्तमान में ReSharper में C ++ सपोर्ट पर काम कर रहे हैं और एक अलग क्रॉस-प्लेटफॉर्म C ++ IDE
जुरा गोरोहोव्स्की

1
@ संबंधित सॉफ्ट विज्ञापन आप प्रसिद्ध हैं। इस youtu.be/RT46MpK39rQ?t=1611
जॉर्ज सी।

जवाबों:


38

मैं विजुअल असिस्टेंट एक्स को विजुअल स्टूडियो के साथ बहुत उपयोगी मानता हूं । एक और विकल्प C ++ के लिए रिफ्लेक्टर है


8
दुर्भाग्य से, C ++ के लिए रिफ्लेक्टर बड़े कोडबस के साथ अच्छी तरह से (यदि बिल्कुल भी) काम नहीं करता है।
डेनियल रोज

1
सी ++ और बड़े कोड बेस के लिए विशेष रूप से रिफ्लेक्टर के साथ क्या होता है?
इरा बैक्सटर

2
@IraBaxter यह बस टूट गया है। रिफैक्टरिंग विकल्प या तो दिखाई नहीं देते हैं या पूरे नहीं होते हैं। अजीब त्रुटि संदेश हैं या कोई भी नहीं है।
डैनियल रोज

4
C ++ के लिए रिफ्लेक्टर छोटे कोडबेस के लिए भी अच्छा काम नहीं करता है, यह बिल्कुल टूटा हुआ और बेकार है।
कोवरेक्स

3
@ निल्स: क्या आप इसका विशिष्ट उदाहरण प्रदान कर सकते हैं कि यह क्या नहीं समझता है?
इरा बैक्सटर

41

विजुअल असिस्ट और विजुअल स्टूडियो बड़े कोडबेस के साथ बहुत आसान काम करते हैं। विज़ुअल असिस्ट यह पता लगाने में अच्छा है कि किसी वर्ग या सदस्य का उपयोग कैसे किया जाता है और यह खोज और प्रतिस्थापन की तुलना में गलत सकारात्मक के बिना इसका नाम बदलने में अधिक प्रभावी है।


23

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

Google ने पहले ही क्लैंग का उपयोग करके बड़े पैमाने पर रीफैक्टरिंग टूल बनाया है


2
लेकिन क्या इसका कोई परिणाम है जो Google के बाहर एक मात्र नश्वर उपयोग कर सकता है?
Jan Hudec

1
@JanHudec: यहाँ से जुड़े ट्यूटोरियल देखें: comments.gmane.org/gmane.comp.compilers.clang.devel/23203
HighCommander4

17

मोज़िला के पास पोर्क ( विकी , डेवलपर विकी ) नाम से अपना स्वयं का रिफैक्टिंग उपकरण है । यहाँ पोर्क के पीछे डेवलपर का ब्लॉग है। मैंने जो पढ़ा है पोर्क से सफलतापूर्वक मोज़िला में रिफलेक्टरिंग में उपयोग किया गया था।

यदि आप * निक्स लैंड से आते हैं तो पोर्क को मदद करनी चाहिए, विजुअल स्टूडियो के लिए मैं भी विजुअल असिस्ट की सलाह देता हूं।


9

हमारा डीएमएस सॉफ्टवेयर रीइंजीनियरिंग टूलकिट एक ट्रांसफॉर्मेशन इंजन है, जिसे C ++ सहित कोड के बड़े निकायों में जटिल परिवर्तनों को पूरा करने के लिए डिज़ाइन किया गया है। इसका उपयोग कोड की लाखों लाइनों की प्रणालियों में विश्वसनीय परिवर्तन करने के लिए किया गया है। यह कंपाइलर-सटीक लैंगगेज एनालिसिस और ट्रांसफार्मर का उपयोग करके संचालित होता है।

इसमें नाम और प्रकार के संकल्प के साथ एक पूर्ण सी ++ पार्सर है, कोड के एएसटी का निर्माण करता है, उन पेड़ों को संशोधित करने के लिए प्रक्रियात्मक या स्रोत-से-स्रोत परिवर्तन (सी ++ सतह सिंटैक्स के साथ) लागू कर सकता है, और संरक्षित किए गए बिना संकलित आउटपुट पुन: उत्पन्न कर सकता है। (संपादित करें: X/१/२०१ standard: अब हम मानक को समझने के लिए सी ++ १ एक्स तक करते हैं :)

इसका उपयोग बड़े पैमाने पर पुनर्रचना परियोजनाओं पर किया गया है, जिसमें C ++ घटक पुन: आर्किटेक्चरिंग, और 100% पूरी तरह से स्वचालित अनुवादों के बीच में शामिल हैं। आप इसके बारे में वेबसाइट पर पढ़ सकते हैं।

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

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

EDIT 7/5/2011: लगता है कि हम इंटरैक्टिव संस्करण में एक रन लेने जा रहे हैं। हमने यह करने के लिए जांच करने के लिए ऊर्जा चरण I SBIR का एक विभाग जीता है। Http://science.energy.gov/sbir/awards-and-general-stats/fy-2011/phase-i-by-state/?p=1#tx ("टेक्सस" के तहत शब्दार्थ डिजाइन देखें )। जल्दी में परिणाम की उम्मीद मत करो; यह केवल एक टूल को प्राप्त करने के लिए 3 चरण मल्टी-ईयर प्रोग्राम की शुरुआत है।

EDIT 8/11/2011: पहली प्रगति ... अब हम C ++ 0x और OpenMP निर्देशों के सभी को संभालते हैं।

EDIT 1/4/2012: C ++ कोड का पूर्ण नियंत्रण प्रवाह विश्लेषण करता है।

EDIT 9/15/2014: अब C ++ 14 फ्रंट एंड पार्सर / परिवर्तन इंजन को हाथ में अच्छी तरह से लें। यहां तक ​​कि इस बिंदु पर बहुत विश्वसनीय रूप से नाम बदलें: -}


आपके डाउनलोड पृष्ठ semanticdesigns.com/Products/RegisterEval.html पर इस उपकरण का मूल्यांकन करने के लिए एक लिंक दिखाई नहीं देता है। क्या इस परीक्षण संस्करण और मूल्य निर्धारण VS2010 या VS2008 के लिए इस समय उपलब्ध है?
स्मैकएल

एक रीफैक्टरिंग टूल के लिए, "जल्दबाज़ी में परिणाम की उम्मीद न करें"। हमारा चरण I R & D कार्य समाप्त हो गया है, और हम द्वितीय चरण के लिए धनराशि के लिए आवेदन कर रहे हैं। डीएमएस और इसका मूल्यांकन करने के लिए चर्चा करने के लिए, कंपनी से संपर्क करें। यह उस तरह की चीज नहीं है जिस तरह से आप "मूल्यांकन करने के लिए डाउनलोड" करते हैं, उसी तरह एंटरप्राइज ओरेकल एक डाउनलोड आइटम नहीं है।
इरा बैक्सटर

... DMS VS2008 / VS2010 को बदलने में सक्षम है, लेकिन एक इंटरैक्टिव उपकरण के रूप में नहीं, और प्रीप्रोसेसर निर्देशों के संबंध में सीमाएं हैं। (अच्छी खबर यह है कि हमें लगता है कि हमने इनके साथ एक प्रमुख मुद्दा हल कर लिया है, और यह एक चरण II R & D कार्यक्रम में लागू होगा)।
इरा बैक्सटर

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

3
... डीएमएस का उद्देश्य कोड परिवर्तन के कोडिंग और त्रुटि मुक्त आवेदन को सक्षम करना है, चाहे "रीफैक्टरिंग" या "नहीं"। हाँ, इसकी कड़ी मेहनत और हम अभी तक वहाँ नहीं हैं। हम C ++ के लिए देखे गए किसी भी अन्य टूल की तुलना में IMNSHO के करीब हैं, और हमारे टूल फ़ाउंडेशन में कुछ भी गलत नहीं है। जो कुछ बचा है वह प्रीप्रोसेसर, कोड स्केल, और C ++ के शब्दार्थों को कोड करने के प्रयासों के साथ-साथ ऐसे परिवर्तनों की अनुमति देने के लिए समस्याग्रस्त हैं। और मैं सबसे पहले कहूंगा कि यह एक बड़ी परियोजना है।
इरा बैक्सटर

8

यदि आप emacs का उपयोग कर रहे हैं, तो Xrefactory आज़माएँ । यह विधि निष्कर्षण, वर्गों / कार्यों / चर का नाम बदलने और सम्मिलित / हटाने / चाल मापदंडों का समर्थन करता है। इसमें बहुत अच्छा / तेज कोड पूरा करने वाला इंजन भी है।


6

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

btw, क्या SlickEdit ने अपनी रिफैक्टिंग सुविधाओं को गिरा दिया है?


सी ++ 2011 मानक के रिलीज के साथ, भाषा में काफी बदलाव आया । अतिरिक्त जटिलताओं से समस्या कठिन हो जाती है, आसान नहीं है, क्योंकि सभी उपयोगकर्ता सभी उन्नत भाषा सुविधाएँ, और एक रीफैक्टरिंग क्षमता चाहते हैं: - {
इरा बैक्सटर

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

4

यदि आप emacs का उपयोग करते हैं और अभी तक कोशिश नहीं की है, तो मैं rtags की कोशिश करने की सलाह देता हूं ( उपलब्ध विम के लिए एक पैकेज भी है )। यह एक क्लैंग आधारित क्लाइंट / सर्वर एप्लिकेशन है जो इन सुविधाओं के साथ C / C ++ कोड को अनुक्रमित करता है:

  • परिभाषा / घोषणा पर जाएं
  • सभी संदर्भ खोजें, अगले / पिछले पर जाएं
  • नाम बदलें
  • क्लैंग के "एकीकरण" के साथ एकीकरण

मैंने इस बात को देखने के बाद इसे आजमाने का फैसला किया जिसने मेरे लिए rtags (और emacs) पेश किए।

(मुझे कहना होगा कि मैं अपने QtCreator के बाद कुछ प्रतीकों को ठीक से नाम देने में विफल रहा, जो अब तक के लिए इस महान आईडीई का उपयोग करने के लिए एक शो-स्टॉपर है, मैं यह बहुत दूर चला गया)

क्या rtags द्वारा समर्थित है इसके अलावा, मैं भी कुछ अतिरिक्त स्वच्छ सुविधाओं की जरूरत है, सहित:

  • फ़ंक्शन परिभाषा / प्रोटोटाइप बनाएं
  • निकालने का कार्य
  • गेट्टर / सेटर विधियाँ बनाएँ

इन के लिए, मैं emacs के लिए अर्थ-रिफ्लेक्टर पैकेज का उपयोग करने की सलाह देता हूं (यह सुनिश्चित नहीं है कि अगर विम के लिए विकल्प हैं)

आम तौर पर, क्लैंग आधारित उपकरण बहुत आशाजनक दिखते हैं । यदि आप C ++ रीफैक्टरिंग के लिए क्लैंग टूल्स के बारे में अधिक जानकारी में रुचि रखते हैं, जिसमें बड़े कोडबेस वाले प्रोजेक्ट्स शामिल हैं, तो चांडलर कारूथ द्वारा कुछ शानदार वार्ताएं हैं।


3

डीएमएस सॉफ्टवेयर rengineering टूलकिट इस मुझे लगता है कि नहीं करता है। यह एक कोड ट्रांसफ़ॉर्मेशन इंजन है, जिसे बड़े पैमाने पर डिज़ाइन किया गया है और यह C ++ को हैंडल करता है। हालांकि उत्पादन कितना सुरुचिपूर्ण है इसका कोई अंदाजा नहीं है।


1
D ++ का उपयोग C ++ कोड के बड़े निकायों की खोज को स्वचालित करने के लिए किया गया है। देखें एकर्स, आर।, बैक्सटर, आई।, मेहलीच, एम।, एलिस, बी।, ल्यूके, के।, केस स्टडी: री-इंजीनियरिंग सी ++ कंपोनेंट मॉडल्स वाया ऑटोमैटिक प्रोग्राम ट्रांसफॉर्मेशन, इंफॉर्मेशन एंड सॉफ्टवेयर टेक्नोलॉजी 49 (3): 275 -291 2007. प्रकाशक से उपलब्ध
इरा बैक्सटर

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


2

समस्या C ++ टेम्पलेट हैं। 2019 तक मैं किसी भी रीफैक्टरिंग टूल से अवगत नहीं हूं जो C ++ टेम्प्लेट का समर्थन करता है। मैंने VS2019, VisualAssist, Clion, QtCreator की कोशिश की है।

उदाहरण पर विचार करें:

#include <iostream>

struct foo { void print() {} };
struct bar { void print() {} };

template <typename T>
void call_print(T&& v) { v.print(); }

void print() {}

int main()
{
    call_print(foo{});
    call_print(bar{});
    return 0;
}

अगर मैं Rename Refactoring को चलाता हूं foo::print, तो bar::printउसका नाम भी स्वचालित रूप से बदला जाना चाहिए। क्योंकि वे call_printफंक्शन टेम्पलेट इंस्टेंटेशंस के माध्यम से जुड़े हुए हैं ।


1

यदि आप विजुअल C ++ (एक्सप्रेस एडिशन फ्री है) का उपयोग कर रहे हैं, तो आप www.wholetomato.com (C ++ रिफ्लेक्टरिंग फीचर्स से लिंक) से विजुअल असिस्ट का उपयोग कर सकते हैं ।

इसकी 30 दिन की परीक्षण अवधि है और हमने पाया है कि यह तेज और अधिक सुविधा-पूर्ण है, जो कि विजुअल C ++ उत्पाद में ही अंतर्निहित अंतर्मुखी है।


2
मुझे नहीं लगा कि आप एक्सप्रेस संस्करण के साथ प्लगइन्स का उपयोग कर सकते हैं
याकूबी

3
मैंने निश्चित रूप से वीए को सी + + एक्सप्रेस के साथ पूर्व में स्थापित करने की कोशिश की है और यह काम नहीं किया।
quamrana

आप Visual Studio प्लग इन को अलग-अलग मोड में स्थापित नहीं कर सकते (एक्सप्रेस संस्करण सभी IDE को पृथक मोड में चलाते हैं)। आप एक छात्र हैं, तो आप कर सकते हैं से हालांकि विजुअल स्टूडियो के पूर्ण संस्करण डाउनलोड DreamSpark या MSDNAA।
बिली ओनली

1

यदि आप अपने कोडबेस को पुन: प्रस्तुत करना चाहते हैं: MOOSE। लेकिन यह एक संपादक नहीं बल्कि विश्लेषण और पुनर्रचना उपकरण का एक बड़ा संग्रह है।


1

Microsoft से दृश्य स्टूडियो 2013 के लिए अब C ++ रिफ्लेक्टिंग एक्सटेंशन है: http://visualstudiogallery.msdn.microsoft.com/164904b2-3b47-417f-9b6b-fdd35757dn4


हां, मैंने यह देखा है, लेकिन यह सिर्फ एक पहली कोशिश है और केवल "नाम बदलें" को कवर करता है। कोई एक्स्ट्रेक्ट फंक्शन आदि नहीं है, लेकिन मैं आगे आने के लिए उत्सुक हूं ...
RED SOFT ADAIR

1

निश्चित रूप से Resharper Ultimate जाने का रास्ता है। खुशी की गारंटी :)

मार्च 2015 के बीटा संस्करण में।


मैंने आखिरकार एक कोशिश की और अपने प्रश्न को अद्यतन किया। फिर भी धन्यवाद।
रेड सॉफ्ट ADAIR

यह .NET के लिए है .... C ++ नहीं।
वॉकरन


1

CLion बहुत ही आशाजनक लग रहा है।

अस्वीकरण: मैंने अभी तक इसकी कोशिश नहीं की है क्योंकि मुझे अपनी परियोजनाओं को सीएमके प्रारूप में बदलने की आवश्यकता है ताकि इसका उपयोग किया जा सके।


1

मेरा सुझाव है कि आप लट्टिक्स आज़माएँ । यह आपको बड़े सी / सी ++ कोडबेस का विश्लेषण करने, अभिलेखीय खोज करने, समस्याग्रस्त निर्भरता की पहचान करने और मॉड्युलैरिटी में सुधार करने और तकनीकी ऋण को कम करने के लिए कोड को फिर से इंजीनियर करने की अनुमति देता है। Lattix रिफ्लेक्टरिंग प्रक्रिया में मदद करने के लिए कई एल्गोरिदम प्रदान करता है। ये एल्गोरिदम आपको यह जानने में मदद करते हैं कि पदानुक्रम के एक हिस्से से दूसरे तक तत्वों को स्थानांतरित करने के लिए, चक्रों को तोड़ने के लिए और उप-प्रणालियों को स्थानांतरित करने के लिए ताकि उपतंत्रों के युग्मन और सामंजस्य को बेहतर बनाया जा सके। यहां एंड्रॉइड कर्नेल (1.6 मिलियन LOC C / C ++) का विश्लेषण करने वाले Lattix के परिणाम हैं । पूर्ण प्रकटीकरण: मैं लटिक्स के लिए काम करता हूं


1

केवल इस प्रश्न को इतनी देर से पाने के लिए क्षमा करें। मेरे छात्र और सहायक 2006 के बाद से C ++ रीफैक्टरिंग पर काम करते हैं। अधिकांश सीडीटी रिफैक्टिंग इन्फ्रास्ट्रक्चर को आईएफएस इंस्टीट्यूट ऑफ सॉफ्टवेयर में मेरी टीम द्वारा बनाया गया था। चूँकि हम C ++ कोड आधुनिकीकरण रिफलेक्टरिंग आदि के लिए समर्थन के साथ CDT के हमारे संस्करण को Cevelop प्रदान करते हैं, इसलिए यदि कार्यक्षेत्र सही ढंग से सेट किया गया है तो Cevelop बड़े कोड बेस के साथ काम कर सकता है। Https://cevelop.com पर मुफ्त उपलब्ध है


बहुत ही रोचक। मैंने इसे डाउनलोड किया और यह शुरू नहीं हुआ। कृपया github.com/Cevelop/Issues/issues/84
RED सॉफ्ट ADAIR

0

मुझे विजुअल स्टूडियो 2013 के लिए निम्नलिखित प्लगइन मिला: Microsoft द्वारा विजुअल C ++ रीफैक्टरिंग

यह सिर्फ एक सरल नामकरण उपकरण है, लेकिन यह निर्दोष काम करता है। यह प्रतीक पर राइट-क्लिक करने के बाद निम्न संदर्भ मेनू जोड़ता है:

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.