2009-09-16 6 views
18

मुझे हाल ही में कोड कोड के लिए Coverity Prevent के विकल्पों के बारे में पूछा गया था जिसमें सी/सी ++ और जावा दोनों शामिल हैं। जाहिर है, जावा पक्ष पर, उपलब्ध मुफ्त टूल में Findbugs (संकलित कोड विश्लेषण) और पीएमडी (स्थिर कोड विश्लेषण) शामिल हैं। वे बहुत शक्तिशाली हैं, खासकर जब आप आईडीई के साथ एकीकरण की जांच शुरू करते हैं (जो, फिर से, मुक्त हैं)।क्या सी/सी ++ के लिए एक Findbugs और/या पीएमडी समतुल्य है?

हालांकि, बातें जब तुम सी में जाने/C++ विभिन्न compilers, आर्किटेक्चर के साथ दायरे, आदि शुरू dicey हैं

मैं जावा पक्ष के लिए उपकरणों की एक किस्म का प्रस्ताव किया है दोनों FindBugs और PMD भी शामिल है। निम्न मीट्रिक का उपयोग करते समय विचार किया क्या मैं देख रहा हूँ C/C++ पक्ष के लिए सबसे अच्छा विकल्प है:

  1. कीमत: मुक्त बेहतर है लेकिन बेहतर मूल्य द्वारा पीटा जा सकता है। हालांकि, मूल्य निर्धारण मॉडल जो कोड की प्रति पंक्ति चार्ज करते हैं वे भयानक हैं।
  2. फ़ीचर सेट: यह टूल मेरे जीवन को बेहतर कैसे बनाता है? कोड भेजने से पहले, मैं इन्हें जांचने से पहले अपनी गलतियों का पता कैसे लगाता हूं?
  3. उपयोगिता: क्या मैं अपने डेस्क पर टूल का उपयोग कर सकता हूं? क्या मैं रिपोर्ट और/या निष्कर्ष साझा कर सकता हूं? क्या मैं टूल को फोगबगज़ (जिसे हम अपने समूह में उपयोग करते हैं) के साथ एकीकृत कर सकते हैं? क्या मैं टूल को क्रूज़ कंट्रोल (या समतुल्य) में एकीकृत कर सकता हूं?

अंतिम उपकरण कुछ ऐसा होगा जो खोज सुविधा के साथ Findbugs और पीएमडी के संयोजन के रूप में उपयोगी और उपयोग योग्य होगा, सभी प्रति सीट शून्य डॉलर के लिए।

उत्तर

3

सी ++ के लिए सी और Cppcheck के लिए दिमाग में आने वाले दो Splint हैं।

यदि आप अधिक विकल्प देखना चाहते हैं, तो इन उपकरणों का यह कार्य "स्थैतिक कोड विश्लेषण" है। यह आपको सी और/या सी ++ के लिए और अधिक टूल खोजने में मदद कर सकता है। इसके अलावा, आपको "What open source C++ static analysis tools are available?"

+0

विकी के लिंक के लिए धन्यवाद। इस मामले में, मैं सभी उपलब्ध उपकरणों की सूची के बजाय एक विशिष्ट सुविधा सेट तैयार करने की कोशिश कर रहा हूं। यह सवाल विशेष रूप से रिफ्लेक्सिव प्रतिक्रिया को संबोधित करने का प्रयास कर रहा है जब मैं Findbugs और पीएमडी के बारे में बात करता हूं: "ओह, ऐसा कुछ भी नहीं है जो सी ++ के लिए मौजूद है।" –

+1

उपकरण है कि मैं जुड़ा हुआ अपने सीमित C/C++ का अनुभव है, उन भाषाओं के लिए स्थिर कोड विश्लेषण के लिए अग्रणी गैर वाणिज्यिक उपकरणों से, कर रहे हैं। वहां अन्य लोग भी हो सकते हैं, लेकिन अगर मुझे उन भाषाओं में से किसी एक में स्थिर विश्लेषण करने की ज़रूरत है, तो ये वे उपकरण हैं जिन्हें मैं पकड़ूंगा। –

+0

@ थॉमस ओवेन्स, पर्याप्त मेला - सिफारिशों के लिए धन्यवाद। –

3

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

गिंपेल सॉफ्टवेयर का PC-lint सी ++ के लिए मानक बग-चेकिंग टूल की सबसे नज़दीकी चीज है जो मुझे पता है। यह एक उचित मूल्य निर्धारण मॉडल के साथ वाणिज्यिक है। मुझे नहीं पता कि यह अन्य उपकरणों के साथ कितनी अच्छी तरह एकीकृत है।

Clang ओपन सोर्स प्रोजेक्ट अंत में आप जो कुछ चाहते हैं उसे करने में सक्षम होना चाहिए (और वास्तव में ठंडा दिखता है), लेकिन यह अभी भी विकास में है।

+0

पीसी-एक प्रकार का वृक्ष काफी त्रुटि रिपोर्टिंग के नजरिए से कम से कम एकीकृत करने के लिए जब से तुम त्रुटि संदेश प्रारूप कॉन्फ़िगर कर सकते हैं के रूप में अपने आईडीई के लिए आवश्यक रूप से अपने आप त्रुटियों को खोजने के लिए आसान है। –

+0

मुझे जटिलता टिप्पणी पर असहमत होना है। मैं सहमत हूं कि जावा बाइट कोड या मानक जावा स्रोत का विश्लेषण करने के लिए यह अधिक सुविधाजनक * सुविधाजनक है। –

+0

मैक्रो, एक ट्यूरिंग-पूर्ण संकलन समय टेम्पलेट भाषा, पर्याप्त जटिलता और विशेष मामलों है कि सबसे अधिक (सभी?) Compilers, मानक गलत के कुछ पहलू मिल बूस्ट में जिसके परिणामस्वरूप संकलक समाधान की एक व्यापक सूची को विकसित करने वाले ... मुझे पसंद है सी ++, लेकिन यह एक साधारण भाषा नहीं है, और यह टूलिंग को कठिन बनाता है। –

0

मैंने पहले भी Klocwork और Rational Software Analyzer का उपयोग किया है, और वे दोनों अच्छी तरह से काम हालांकि दोनों वाणिज्यिक/गैर-स्वतंत्र हैं।

3

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

ओपन-सोर्स बुद्धिमान, वहाँ Smatch, Coverity के मेटा-संकलन विश्लेषण तकनीक है, जो शराब परियोजना महान प्रभाव के लिए काफी भारी का उपयोग करता है पर आधारित है। पीएमडी का सीपीडी (कॉपी पेस्ट डिटेक्टर) उप-उपकरण सी ++ पर काम करता है, और वास्तव में तेज़ है। चक्रीय जटिलता के लिए, pmccabe है जो एपीटी-गेट के माध्यम से आसानी से स्थापित किया जा सकता है (लिनक्स पर; विंडोज़ पर, मैं सिग्विन के तहत स्रोत संकलित करता हूं)।

पीसी-एक प्रकार का वृक्ष, एक या दो दिन में सबसे यह अच्छी तरह से काम कर पाने के लिए कुछ विन्यास की आवश्यकता होती है। अन्य उपकरण गहराई से काम नहीं करते हैं, इसलिए आप "ढूंढें। -नाम .c | xargs pmccabe | sort -n | tail -n 20"

0

मैं उपयोग करता हूं जैसे कमांड के साथ चलने वाली जमीन को हिट कर सकता हूं। flawfinder.py जो सी/सी ++ में 160 खतरनाक कार्यों के लिए स्कैन करता है। http://www.dwheeler.com/flawfinder/

यदि आप फ्लॉफाइंडर के आधार पर रूबी पोर्ट चाहते हैं तो आप vulnxpose.rb का उपयोग कर सकते हैं। https://github.com/nanotechz9l/Source-code-analyzer

इन उपकरणों के

दोनों बफर अतिप्रवाह, दौड़ की स्थिति, कमजोर क्रिप्टो, क्रूट जेल कॉन्फ़िगरेशन सहित ज्ञात कमजोरियों के लिए C/C++ स्रोत कोड फ़ाइलों को स्कैन करता है ... & अधिक)।

रिक

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