क्या कोई उपकरण उपलब्ध है जो आपकी परियोजना के लिए कोड मेट्रिक्स (उदाहरण के लिए कोड लाइन्स, साइक्लोमैटिक जटिलता, युग्मन, सामंजस्य) की गणना करेगा और समय के साथ रुझान दिखाने वाला ग्राफ़ तैयार करेगा?
क्या कोई उपकरण उपलब्ध है जो आपकी परियोजना के लिए कोड मेट्रिक्स (उदाहरण के लिए कोड लाइन्स, साइक्लोमैटिक जटिलता, युग्मन, सामंजस्य) की गणना करेगा और समय के साथ रुझान दिखाने वाला ग्राफ़ तैयार करेगा?
जवाबों:
अपने नवीनतम प्रोजेक्ट पर मैंने SourceMonitor का उपयोग किया । यह कोड मैट्रिक्स विश्लेषण के लिए एक अच्छा मुफ्त उपकरण है।
यहाँ SourceMonitor आधिकारिक साइट से एक अंश है:
- मेट्रिक्स को एक तेज़, एकल स्रोत फ़ाइलों के माध्यम से एकत्रित करता है।
- C ++, C, C #, VB.NET, जावा, डेल्फी, विज़ुअल बेसिक (VB6) या HTML में लिखे गए सोर्स कोड के लिए मीट्रिक्स।
- C ++, C, C #, VB.NET, Java और डेल्फी के लिए विधि और फ़ंक्शन स्तर मैट्रिक्स शामिल हैं।
- सॉफ्टवेयर विकास परियोजनाओं के दौरान तुलना के लिए चौकियों में मैट्रिक्स बचाता है।
- तालिका और चार्ट में मैट्रिक्स प्रदर्शित करता है और प्रिंट करता है।
- XML कमांड फ़ाइलों का उपयोग करके एक मानक विंडोज जीयूआई या आपकी स्क्रिप्ट के अंदर संचालित होता है।
- अन्य उपकरणों के साथ आगे की प्रक्रिया के लिए एक्सएमएल या सीएसवी (कॉमा-सेपरेटेड-वैल्यू) फ़ाइलों के लिए मैट्रिक्स का निर्यात करता है।
.NET के लिए ND निर्भरता के लिए जो कि केवल सबसे अच्छा उपकरण है, मैं vil की सिफारिश कर सकता हूं ।
निम्नलिखित उपकरण प्रवृत्ति विश्लेषण कर सकते हैं:
सोनार निश्चित रूप से एक उपकरण है जिसे आपको विशेष रूप से जावा परियोजनाओं के लिए विचार करना चाहिए। हालाँकि यह PHP या C / C ++, Flex और Cobol कोड को भी हैंडल करेगा।
यहाँ एक स्क्रीनशॉट है जो एक परियोजना पर कुछ मैट्रिक्स दिखाता है:
alt text http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png
ध्यान दें कि आप http://nemo.sonarsource.org पर उनकी डेमो साइट का उपयोग करके टूल को आज़मा सकते हैं
.Net के लिए ND निर्भरता
मैं अपनी IDE के लिए एक कोड मेट्रिक्स टूल / प्लगइन की भी तलाश कर रहा था, लेकिन जहाँ तक मुझे पता है कि कोई भी (ग्रहण के लिए) नहीं है जो एक निर्दिष्ट समय अवधि में जटिलता का ग्राफ भी दिखाता है। हालाँकि, मुझे ग्रहण मेट्रिक्स प्लगइन मिला , यह संभाल सकता है:
और इसका उपयोग करते समय, मैंने उस रेखांकन विकल्प को याद नहीं किया जिसे आप चाह रहे हैं।
मुझे लगता है कि, यदि आपको कोई प्लगइन्स / उपकरण नहीं मिलते हैं जो समय के साथ रेखांकन को संभाल सकते हैं, तो आपको उस उपकरण को देखना चाहिए जो आपको सबसे अधिक सूट करता है और आपको आवश्यक सभी जानकारी प्रदान करता है; भले ही दी गई जानकारी केवल आपकी परियोजना के वर्तमान निर्माण के लिए हो।
एक साइड नोट के रूप में, ग्रहण मेट्रिक्स प्लगइन आपको डेटा को एक बाहरी फ़ाइल (लिंक एक उदाहरण पर जाता है) में निर्यात करने की अनुमति देता है , इसलिए यदि आप एक स्रोत नियंत्रण उपकरण का उपयोग करते हैं, और आपको चाहिए! आप हमेशा विशिष्ट के लिए डेटा निर्यात कर सकते हैं! स्रोत कोड के साथ फाइल बनाएं और स्टोर करें, इस तरह से आपके पास समय में वापस जाने और मतभेदों की जांच करने का एक (मूल) तरीका है।
ध्यान रखें, आप जो मापते हैं, वह आपको मिलता है। लोकेशन उत्पादकता या प्रभावकारिता के बारे में कुछ नहीं कहती।
कोड की लाइनों द्वारा एक प्रोग्रामर को रेट करें और आपको कोड की लाइनें मिलेंगी। यही तर्क अन्य मैट्रिक्स के लिए भी जाता है।
otoh .. http://www.crap4j.org/ एक बहुत ही रूढ़िवादी और उपयोगी मीट्रिक है। यह कवरेज के संबंध में जटिलता निर्धारित करता है।
ND निर्भर, मैं इसे और इस उद्देश्य के लिए इसका सबसे अच्छा उपयोग कर रहा हूं। इसे देखें: http://www.codeproject.com/KB/dotnet/NDepend.aspx
उपकरण ND ND को लेकर यह 82 विभिन्न कोड मीट्रिक के साथ आता है, कोड ऑफ़ लाइन्स ऑफ़ कोड, से विधि रैंक (लोकप्रियता), साइक्लोमैटिक कॉम्प्लेक्सिटी, विधि के सामंजस्य का अभाव, प्रतिशतता कवरेज (NCover या VSTS द्वारा निकाला गया), वंशानुक्रम की गहराई .. ।
अपनी शासन प्रणाली के साथ, एनडिपेंडेंट भी मुद्दों और अनुमानों का पता लगा सकता है तकनीकी ऋण जो एक दिलचस्प कोड मीट्रिक है (समस्याओं को ठीक करने के लिए देव-प्रयास की मात्रा बनाम देव-समय की राशि प्रति वर्ष खराब होने वाली समस्याओं को अनफ़िक्स करने के लिए)।
इन सभी मैट्रिक्स को यहाँ अलग किया गया है ।
यदि आप .NET स्थान पर हैं, तो डेवलपर एक्सप्रेस ' CodeRush LOC, साइक्लोमैटिक जटिलता और (बल्कि उत्कृष्ट, IMHO) रखरखाव जटिलता प्रदान करता है वास्तविक समय में कोड का विश्लेषण प्रदान करता है।
(अनुरक्षण जटिलता लिंक के बारे में क्षमा करें; यह Google के कैश में जा रहा है। मूल ऑफ़लाइन है।)
एटलसियन फिशई नौकरी के लिए एक और उत्कृष्ट उपकरण है। यह आपके स्रोत नियंत्रण प्रणाली (वर्तमान में CVS, SVN और Perforce का समर्थन करता है) के साथ एकीकृत करता है, और इस तरह आपकी सभी फाइलों का विश्लेषण करता है। विश्लेषण हालांकि बुनियादी है, और उत्पाद स्वयं वाणिज्यिक (लेकिन बहुत उचित मूल्य, IMO) है।
आप इसके लिए एक ऐड-ऑन भी प्राप्त कर सकते हैं जिसे क्रूसिबल कहा जाता है जो सहकर्मी कोड समीक्षाओं की सुविधा देता है।
Visual Studio .NET (कम से कम C # और VB.NET) के लिए, मैं मैट्रिक्स के लिए निशुल्क StudioTools को बेहद उपयोगी मानता हूं । यह वाणिज्यिक उपकरणों में पाया जाने वाला कई सुविधाएँ भी जोड़ता है जैसे कि ReSharper ।
कोड एनालाइज़र सरल उपकरण है जो इस तरह के मेट्रिक्स उत्पन्न करता है।
(स्रोत: teel.ws )
पायथन के लिए, पाइलिंट कुछ कोड गुणवत्ता वाले मैट्रिक्स प्रदान कर सकता है।
यदि आप .NET का उपयोग कर रहे हैं तो रिफ्लेक्टर के लिए कोड मेट्रिक्स प्लगइन भी है ।
मैं कोड मेट्रिक्स व्यूअर एक्सेंशन की सिफारिश करूंगा विजुअल स्टूडियो के लिए ।
एक बार में समाधान का विश्लेषण करना बहुत आसान है, अगर आपने प्रगति की है, तो तुलना भी करें ;-)
सुविधाओं के बारे में यहाँ और पढ़ें
PHP के मोर्चे पर, मेरा मानना है कि उदाहरण के लिए phpUnderControl में phpUnit (यदि मैं गलत नहीं हूँ) के माध्यम से मैट्रिक्स शामिल हैं ।
ध्यान रखें कि मैट्रिक्स अक्सर त्रुटिपूर्ण होते हैं। उदाहरण के लिए, एक कोडर जो तुच्छ समस्याओं पर काम कर रहा है, और अधिक कोड का उत्पादन करेगा और आपके ग्राफ़ पर बेहतर दिखाई देगा, एक कोडर की तुलना में जो जटिल मुद्दों को क्रैक कर रहा है।
यदि आप कुछ प्रवृत्ति विश्लेषण के बाद हैं, तो क्या इसका वास्तव में SLOC से परे माप करने का कोई मतलब है?
यहां तक कि अगर आप सिर्फ अर्ध-कॉलोनों को पीछे करने और लौटाई गई लाइनों की संख्या की गणना करने के लिए एक grep कर रहे हैं, तो आप एसएलओसी माप तकनीक में स्थिरता के बाद क्या कर रहे हैं। इस तरह आज के माप की तुलना पिछले महीने के माप से सार्थक तरीके से की जा सकती है।
मैं वास्तव में नहीं देख सकता कि मैककेबे साइक्लोमेट्रिक कॉम्प्लेक्सिटी का एक रुझान क्या देगा? मुझे लगता है कि डेवलपर्स को प्रतिक्रिया देने के लिए गुणवत्ता के स्नैपशॉट के लिए सीसी का अधिक उपयोग किया जाना चाहिए।
संपादित करें: ऊह। बस कुछ अन्य मापों के बारे में सोचा जो उपयोगी हो सकते हैं। एसएलओसी और परीक्षण कवरेज के प्रतिशत के रूप में टिप्पणियाँ। जिसमें से आप पर्ची देना चाहते हैं। इन दोनों में से किसी के भी पीछे हटने के रूप में कभी भी भगवान के रूप में उन्हें "पल की गर्मी में" करना नहीं आता है!
HTH।
चियर्स,
लूटना
स्किटल्स की समझ में आपके लिए बहुत सारे कोड मेट्रिक्स उत्पन्न करने की क्षमता है। मुझे कोड मेट्रिक्स सुविधाओं के साथ बहुत अनुभव नहीं है, लेकिन सामान्य रूप से स्थैतिक विश्लेषण सुविधाएँ अच्छी थीं और कीमत बहुत उचित थी। समर्थन उत्कृष्ट था।
प्रोजेक्ट कोड मीटर एक अंतर विकास इतिहास रिपोर्ट देता है (एक्सेल प्रारूप में) जो एसएलओसी, समय और उत्पादकता प्रतिशत में आपके कोडिंग प्रगति मैट्रिक्स को दर्शाता है (यह समय का अनुमान चक्रीय जटिलता और अन्य मैट्रिक्स पर आधारित है)। फिर एक्सेल में आप आसानी से इच्छित ग्राफ का उत्पादन कर सकते हैं।
इस लेख को देखें जो इसे चरण दर चरण बताता है: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
जावा के लिए आप हमारे टूल को आजमा सकते हैं, क्वालिटीगेट जो 60 से अधिक स्रोत कोड मेट्रिक्स की गणना करता है, समय के माध्यम से सभी परिवर्तनों को ट्रैक करता है और स्रोत कोड की स्थिरता के लिए एक समग्र रेटिंग भी प्रदान करता है।