एक स्थिर कोड विश्लेषण उपकरण का चयन करना

मैं एक परियोजना पर काम कर रहा हूं जहां मैं यूनिक्स पर्यावरण में सी में कोडिंग कर रहा हूं। मैं अपने स्रोत कोड की जांच करने के लिए लिंट टूल का उपयोग कर रहा हूं। लिंट काफी समय से रहा है (1 9 7 9 से), क्या कोई भी हालिया कोड विश्लेषण टूल का सुझाव दे सकता है जिसका मैं उपयोग कर सकता हूं? अधिमानतः एक उपकरण जो मुफ़्त है।

0
जोड़ा
विचारों: 4
यह भी देखें सबसे अच्छा कमांड लाइन क्या है कोड साफ़ करने के लिए टूल और सी । यदि आपके पास हेडर में उचित रूप से केंद्रीकृत प्रोटोटाइप हैं और हर जगह उपयोग किए जाते हैं, तो क्रॉस-फ़ाइल जांच है कि lint करता है संकलक द्वारा भी किया जाता है (हालांकि एक समय में एक फ़ाइल)।
जोड़ा लेखक Jonathan Leffler, स्रोत
टूल रिक के रूप में बंद करने के लिए वोटिंग।
जोड़ा लेखक Ciro Santilli 包子露宪 六四事件 法轮功, स्रोत

15 उत्तर

सी कोड के लिए, आपको निश्चित रूप से निश्चित रूप से फ्लेक्सलिंट का उपयोग करना चाहिए। मैंने इसे लगभग 15 वर्षों तक इस्तेमाल किया और इसके द्वारा कसम खाता हूँ। वास्तव में महान सुविधाओं में से एक यह है कि चेतावनियों को चुनिंदा रूप से बंद कर दिया जा सकता है और कोड में टिप्पणियों के माध्यम से ("/ * lint -e123 * /")। जब आप साधारण से कुछ करना चाहते थे तो यह एक शक्तिशाली प्रलेखन उपकरण साबित हुआ। "मैं चेतावनी एक्स बंद कर रहा हूं, इसलिए, कुछ अच्छा कारण है कि मैं एक्स कर रहा हूं।"

दिलचस्प सी / सी ++ प्रश्नों में किसी के लिए, उनके कुछ उदाहरणों को उनकी साइट पर देखें और देखें कि क्या आप संकेतों को देखे बिना बग को समझ सकते हैं।

0
जोड़ा
@ एनडब्ल्यूपी, मैं यह नहीं कहूंगा कि यह महंगा है। $ 1000 (यूनिक्स) या $ 400 (विंडोज़) की एकल सीट लागत पर यह शायद एक ग्राहक के मुद्दे के साथ खुद के लिए भुगतान करता है।
जोड़ा लेखक Mark Harrison, स्रोत
फ्लेक्सलिंट हास्यास्पद रूप से महंगा है।
जोड़ा लेखक nwp, स्रोत

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

जो मैं समझता हूं, उससे सिंटैक्स विश्लेषण से थोड़ा अधिक होता है। उदाहरण के लिए, "स्वचालित बग ढूँढना"।

0
जोड़ा

जीसीसी के लिए "-वेफ ++" विकल्प है जो मैक ओएस एक्स मैन पेज के अनुसार होगा:

स्कॉट मेयर्स की प्रभावी सी ++ पुस्तक से निम्न शैली दिशानिर्देशों के उल्लंघनों के बारे में चेतावनी दें:

[कटाव]

मुझे पता है कि आपने सी के बारे में पूछा है, लेकिन यह सबसे नज़दीकी है जो मुझे पता है ..

0
जोड़ा
मौजूदा कोड बेस के लिए, -वेफ ++ में बहुत से "नागी" चेतावनियां हैं जो वार्ता के साथ संयोजन में उपयोग करने के लिए औचित्य साबित करती हैं।
जोड़ा लेखक Tom, स्रोत

lint is constantly updated... so why would you want a more recent one.

बीटीडब्ल्यू फ्लेक्सलिंट है लिंट

0
जोड़ा
फ्लेक्सलिंट एक वाणिज्यिक उत्पाद है जिसका जॉनसन के मूल यूनिक्स लिंट, AFAIK के साथ आम तौर पर कोई विकास इतिहास नहीं है। एक गैर वाणिज्यिक विकल्प स्प्लिंट है।
जोड़ा लेखक Chris Conway, स्रोत

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

मैं एक उत्तराधिकारी उपकरण की सार्वजनिक रिलीज की ओर काम कर रहा हूं, ओरियन ( सामग्री किसी भी उपलब्ध नहीं है )

0
जोड़ा

लिंट-जैसे उपकरण आम तौर पर "झूठी अलार्म" समस्या से पीड़ित होते हैं: वे वास्तव में मौजूद होने से बहुत अधिक मुद्दों की रिपोर्ट करते हैं। यदि वास्तव में उपयोगी चेतावनियों का अनुपात बहुत कम है, तो उपयोगकर्ता केवल टूल को अनदेखा करना सीखता है। अधिक आधुनिक उपकरण सबसे अधिक संभावना / रोचक चेतावनियों पर ध्यान केंद्रित करने के लिए कुछ प्रयास खर्च करते हैं।

0
जोड़ा

हम C ++ स्रोत कोड को देखने के लिए कवरेज रोकें का उपयोग कर रहे हैं।

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

0
जोड़ा

अच्छा दिन,

मैं पूरी तरह से सेटिंग के बाद आपको बता रहा हूं कि संकलक क्या कह रहा है पढ़ने और पचाने के सुझावों से पूरी तरह से सहमत हूं।

सुरक्षा के लिए एक अच्छा स्थैतिक विश्लेषण उपकरण डेविड व्हीलर द्वारा लिखित FlawFinder है। यह एक अच्छा काम करता है जो विभिन्न सुरक्षा शोषण की तलाश में है,

हालांकि, यह आपके कोड के माध्यम से पढ़े जाने वाले किसी ज्ञात व्यक्ति को प्रतिस्थापित नहीं करता है। जैसा कि डेविड अपने वेब पेज पर कहता है, "एक उपकरण के साथ एक मूर्ख अभी भी मूर्ख है!"

चियर्स,

लूटना

0
जोड़ा

मैंने हाल ही में अपने निपटारे में मौजूद सभी स्थैतिक विश्लेषण उपकरणों की एक सूची संकलित की है, मैं अभी भी उन सभी का मूल्यांकन करने की प्रक्रिया में हूं। नोट, ये ज्यादातर सुरक्षा विश्लेषण उपकरण हैं।

0
जोड़ा
स्प्लिंट, उत्कृष्ट उपकरण और मुफ्त के लिए +1 (मुफ्त भाषण में, मुफ्त बियर में नहीं)
जोड़ा लेखक bortzmeyer, स्रोत
यह शब्द के दोनों अर्थों में मुफ़्त है।
जोड़ा लेखक sebnow, स्रोत

संकलक खुद को नजरअंदाज न करें।

कंपाइलर के दस्तावेज़ को पढ़ें और सभी चेतावनियां और त्रुटियां जो इसे प्रदान कर सकती हैं, और फिर आपके लिए जितनी समझदारी हो सके उतनी सक्षम करें।

यह भी सुनिश्चित करें कि त्रुटियों जैसे चेतावनियों का इलाज करने के लिए अपने कंपाइलर को बताना ताकि आपको तुरंत उन्हें ठीक करने के लिए मजबूर किया जा सके। (जीसीसी पर "वायुमंडल"

इसके अलावा: gcc पर "-Wall" सभी चेतावनियों को सक्षम करने के लिए नहीं करता है, मूर्ख मत बनो।

इसके अलावा: वालग्रिंड (फ्री!) देखें - यह "स्वचालित रूप से कई स्मृति प्रबंधन और थ्रेडिंग बग का पता लगाता है, और आपके कार्यक्रमों को विस्तार से प्रोफाइल करता है।"

Valgrind isn't a static checker, but it's a great tool! http://valgrind.org

0
जोड़ा
यह स्वीकार्य उत्तर कैसे आता है? अगर मैं संसाधन सुरक्षा की जांच करना चाहता हूं, जैसे लॉक / अनलॉक करना? कंपाइलर कुछ भी नहीं कर सकता है। और valgrind गतिशील कोड विश्लेषण है ...
जोड़ा लेखक UmNyobe, स्रोत

PC-lint/Flexelint are very powerful and useful static analysis tools, and highly configurable, though sadly not free.

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

इस तरह निरंतर उपयोग के साथ, आप जल्द ही सीखें कि कैसे अपना कोड लिखना है जो उपकरण द्वारा लागू नियमों की पुष्टि करता है।

इस वजह से, मैं लिंट जैसे टूल्स पसंद करता हूं जो अपेक्षाकृत तेज़ी से दौड़ते हैं, और इसलिए अधिक बोझिल टूल के बजाए निरंतर उपयोग को प्रोत्साहित करते हैं, जिन्हें आप कम से कम उपयोग कर सकते हैं।

0
जोड़ा

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

कुछ वार्ता में कुछ अच्छी चर्चाएं हैं यहां । यह स्थिर विश्लेषण पर अमेरिकी गृह विभाग सुरक्षा विभाग द्वारा आयोजित एक सम्मेलन से है।

0
जोड़ा

Sparse is a computer software tool, already available on Linux, designed to find possible coding faults in the Linux kernel.

लोड करने योग्य कर्नेल मॉड्यूल की गुणवत्ता में सुधार करने के उद्देश्य से लिनक्स सत्यापन केंद्र की दो सक्रिय परियोजनाएं हैं।

  1. लिनक्स ड्राइवर सत्यापन (एलडीवी) - लिनक्स डिवाइस ड्राइवरों के स्थिर स्रोत कोड सत्यापन के लिए एक व्यापक टूलसेट।
  2. केईडीआर फ्रेमवर्क - गतिशील विश्लेषण और कर्नेल मॉड्यूल के सत्यापन के लिए एक विस्तारणीय ढांचा।
  3. एक और चल रही प्रोजेक्ट लिनक्स फ़ाइल सिस्टम सत्यापन है जिसका उद्देश्य लिनक्स फ़ाइल सिस्टम कार्यान्वयन के सत्यापन के लिए एक समर्पित टूलसेट विकसित करना है।
0
जोड़ा

You can use cppcheck. It is an easy to use static code analysis tool.
For example:
cppcheck --enable=all .
will check all C/C++ files under the current folder.

0
जोड़ा

You can try CppDepend, a pretty complete static analyzer available on windows and linux, throught VS Plugin, IDE or command line, and it's free for open source contributors

0
जोड़ा