2008-08-21 33 views
31

This questionCyclomatic Complexity पर मुझे static code analysis के बारे में और अधिक सोचने लगा। कोड जटिलता और स्थिरता का विश्लेषण कभी-कभी उपयोगी होता है, और मैं इसे और अधिक करना शुरू करना चाहता हूं। इस तरह के विश्लेषण के लिए आप कौन से टूल्स (प्रति भाषा) की सिफारिश करते हैं? Wikipedia में उपकरण की एक बड़ी सूची है, लेकिन किस लोगों ने पहले कोशिश की है?स्थिर कोड विश्लेषण के लिए आप किन टूल्स का उपयोग करते हैं?

संपादित करें: डेविड बताते हैं रूप में, यह एक पूरी तरह से अचानक सवाल जब यह C/UNIX based tools की बात आती नहीं है।

उत्तर

0

एकमात्र बार मैंने कभी भी उन उपकरणों में से एक का उपयोग किया है स्प्लिट (सी प्रोग्रामिंग भाषा) है। मैंने सोचा कि यह सहायक था, लेकिन मैं किसी भी तरह से एक बिजली उपयोगकर्ता नहीं था और मुझे लगता है कि मैं जो भी कर सकता था उसकी सतह को मुश्किल से खरोंच कर रहा था।

2

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

+0

+1 है यही कारण है कि मैं भी का उपयोग –

5

नेट के लिए हम NDepend का उपयोग करते हैं। यह एक अच्छा उपकरण है और इसे निर्माण में एकीकृत किया जा सकता है (हम सीसीनेट का उपयोग करते हैं)।

http://www.ndepend.com/

HTH।

1

Lint केवल एक ही स्थिति है जिसका मैंने पिछली स्थिति में उपयोग किया है। यह बुरा नहीं था, ज्यादातर चीजों ने सुझाव दिया कि अच्छे कैच थे, कुछ ने ज्यादा समझ नहीं ली। जब तक आपके पास यह सुनिश्चित करने के लिए कोई प्रक्रिया नहीं है कि कोई लिंट त्रुटियां या चेतावनियां नहीं हैं, तो शायद कुछ अन्य छिपी हुई बग्स

2

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

2

जाहिर है, उत्तर प्रोग्रामिंग भाषाओं पर निर्भर करता है। UNO सी कार्यक्रमों के लिए अच्छा है।

@ थॉमस ओवेन्स: मुझे लगता है कि आपका स्प्लिंट था।

1

हम अपने सी कोड के लिए प्रोग्रामिंग रिसर्च के QAC का उपयोग करते हैं। ठीक काम करता है

हाल ही में हम कवरेज के Prevent या GrammaTech द्वारा विश्लेषण टूल जैसे कुछ अधिक उन्नत और स्थैतिक/गतिशील कोड विश्लेषकों की जांच करने के बारे में बात कर रहे हैं।

वे न केवल स्थिर विश्लेषण करते हैं बल्कि रनटाइम त्रुटियों को भी ढूंढते हैं। एक प्रमुख बिक्री बिंदु कम झूठी सकारात्मक मानी जाती है।

6

सी और उद्देश्य-सी के लिए, आप LLVM/ClangStatic Analyzer का भी उपयोग कर सकते हैं।

यह ओपन सोर्स और सक्रिय विकास के तहत है।

1

हम पाम फॉर सी और सी ++ कोड विश्लेषण पर Coverity Prevent का उपयोग करते हैं, और यह हमारे कोड में कुछ छिपी हुई बग को उजागर करने का एक अच्छा काम है।यह भी हिट समस्याओं की संभावना नहीं है, लेकिन टूल जेनरेट करने वाले कोड डेटाबेस में "ठीक नहीं होगा" या "कोई समस्या नहीं" के रूप में चिह्नित करना आसान है। यह महंगा है, लेकिन कंपनी कभी-कभी ओपन सोर्स प्रोजेक्ट्स पर चलता है और रखरखाव को रिपोर्ट प्रदान करता है। यदि आप हमारे अनुभव के बारे में अधिक पढ़ना चाहते हैं तो उनके पास a whitepaper about our use of the product है।

3

सी ++ के लिए, मैं सीपीपी चेक का उपयोग करता हूं। यह काम तो ठीक करता है।

1

मेरे व्यवस्थापक वास्तव में सस्ता कर रहे हैं, इसलिए मैं केवल वास्तव में सस्ते उपकरणों का उपयोग कर सकते हैं:

1) CCCC (C/C++ कोड काउंटर): लाइनों की संख्या से संबंधित कई परिणाम (टिप्पणियों के बनाम लाइनों, cyclomatic जटिलता , सूचना प्रवाह, ...) 2) सेमिनियन: मैंने कभी भी सबसे तेज़ कोड डुप्लिकेशन खोजक की कोशिश की। 3) एलओसी मेट्रिक्स: बहुत उपयोगी नहीं है लेकिन एक बिंदु बनाने में मदद कर सकता है।

0

मैं कई भाषाओं में काफी कुछ खुला स्रोत और वाणिज्यिक स्थिर विश्लेषण उपकरणों का उपयोग किया है और मुझे लगता है कि समग्र चर्चा एक अवधारणा तकनीकी ऋण (which this article goes into detail about) के रूप में जाना की छतरी के नीचे फिट बैठता है।

+0

धन्यवाद एंड्रयू, मैं CodePro नहीं पता था। यह बहुत अच्छा लगता है! – alcor

23

हालांकि तुरंत उत्तर के लिए, यहां प्रति भाषा मेरे पसंदीदा हैं

मैं एक हडसन निरंतर एकीकरण स्थापित कर रहा हूं (सीआई) का निर्माण प्रणाली मेरी ऑब्जेक्टिव-सी iPhone परियोजनाओं (iOS एप्लिकेशन) के लिए, और उपकरण है कि निर्माण के दौरान अपनी परियोजनाओं का विश्लेषण करने के लिए इस्तेमाल किया जा सकता है की एक विविध सूची तैयार की है:

  • बजना स्थिर विश्लेषक: मुफ्त, अद्यतित स्टैंड-अलोन टूल जो क्लैंग के संस्करण की तुलना में अधिक मुद्दों को पकड़ता है जिसमें एक्सकोड 4 सक्रिय परियोजना शामिल है। - यात्रा http://clang-analyzer.llvm.org

  • Doxygen: मुक्त प्रलेखन पीढ़ी उपकरण है जो भी वर्ग निर्भरता चित्र उत्पन्न करता है। सक्रिय परियोजना - जाएँ http://www.stack.nl/~dimitri/doxygen

  • HFCCA (हेडर से मुक्त cyclomatic जटिलता विश्लेषक): नि: शुल्क अजगर स्क्रिप्ट कोड जटिलता की गणना, लेकिन हेडर फाइल और पूर्व प्रोसेसर के बिना करने के लिए। हडसन/जेनकींस के लिए एक्सएमएल प्रारूप में आउटपुट का समर्थन करता है। सक्रिय परियोजना - यात्रा के http://code.google.com/p/headerfile-free-cyclomatic-complexity-analyzer

  • Cloc (कोड की लाइनें गिनती):, फ़ाइलें गिनती करने के लिए नि: शुल्क उपकरण कोड, टिप्पणी, और रिक्त लाइनों की तर्ज। Diffing का समर्थन करता है, तो आप निर्माण के बीच अंतर देख सकते हैं। सक्रिय परियोजना - http://cloc.sourceforge.net

  • SLOCcount (कोड गिनती के स्रोत लाइनों) पर जाएँ: कोड की लाइनों की गिनती और लागत और एक परियोजना के साथ जुड़े समय अनुमान लगाने के लिए एक नि: शुल्क उपकरण। सक्रिय प्रतीत नहीं होता है।- यात्रा के http://sourceforge.net/projects/sloccount और http://www.dwheeler.com/sloccount

  • AnalysisTool: मुक्त कोड विश्लेषण उपकरण है कि कोड जटिलता का है और यह भी निर्भरता चित्र उत्पन्न करता है। अक्रिय। एक्सकोड 4 के साथ काम नहीं कर रहा है, लेकिन मुझे इसे काम करना अच्छा लगेगा। - यात्रा के http://www.karppinen.fi/analysistool

संबंधित मुद्दे