2013-03-03 14 views
33

Cppcheck के लिए नियम आपको अपनी खुद की नियम फाइलें बनाने की अनुमति देता है, लेकिन मुझे नहीं पता कि cppcheck की कार्यक्षमता का कितना खुलासा हुआ है।cppcheck

कोई भी ऐसे सेट पर काम कर रहा है जो JSF या MISRA नियमों को लागू करेगा?

+2

क्या आप कोड में __error__ या __style__ समस्या को देखना चाहते हैं? –

+1

उदाहरण के लिए, [मिसरा] (http://en.wikipedia.org/wiki/MISRA_C) सी भाषा का मजबूत सबसेट है, यह असुरक्षित निर्माण को प्रतिबंधित कर सकता है। जैसा विकी कहते हैं: "अधिकांश दिशानिर्देशों को उन टूल का उपयोग करके चेक किया जा सकता है जो स्थिर कोड विश्लेषण करते हैं।" लेकिन वहां सूचीबद्ध उपकरण वाणिज्यिक हैं। एमआईएसआरए कोड को त्रुटि मुक्त नहीं करेगा, लेकिन मिस्रा-पुष्टिकरण कोड में कुछ त्रुटियां लिखना मुश्किल है। मिसा चेकिंग ज्यादातर शैली की जांच है, लेकिन अभी भी उपयोगी है। – osgx

उत्तर

9

आप सभी एमआईएसआरए/जेएसएफ नियमों और निर्देशों को सीपीपीकेक नियमों के रूप में लागू करने में सक्षम नहीं होंगे, ज्यादातर सीधी भाषा सुविधाओं और निर्माणों को प्रतिबंधित करने वाले केवल सीधा व्यक्ति या शैली से संबंधित (कुछ जो दिमाग में आते हैं: कुछ पहले/बाद ./->, एक पंक्ति पर तर्कों के #, यूनियनों का उपयोग स्मृति तक पहुंचने के विभिन्न तरीकों, बिना हस्ताक्षर किए गए/हस्ताक्षर किए गए पहले, आदि की उपस्थिति)।

उपयोगकर्ता Ira Baxter इसे एक अन्य प्रश्न पर comment में बहुत अधिक खींचा गया है cppcheck को छूने: किसी भी पैटर्न को पैटर्न के रूप में प्रदर्शित/सरलीकृत नहीं किया जा सकता है। कस्टम नियम के लिए पैटर्न पर भरोसा करना मुश्किल संभालने के लिए और प्रकार पर प्रकार(जैसे sizeof() करने के लिए उच्च स्तर के मुद्दों, उदाहरण के लिए संबंधित पता लगाने के लिए बनाता है; आप पार्स और टोकन (typedefs, enums इकट्ठा करने के लिए) के रूप में इस्तेमाल होता है एक प्रकार प्रतिनिधित्व), विरासत(जैसे कक्षाएं, incl। व्युत्पन्न हैं, दोनों के रूप में आभासी और गैर आभासी) इस्तेमाल किया, और गुंजाइश। उनको cppcheck में हार्ड-कोड करने की आवश्यकता है (आप हमेशा cppcheck कांटा कर सकते हैं ...)

किसी भी मामले में, क्या आपने मिसा (या जेएसएफ) नियमों को छुआ है? क्या यह एक परियोजना के लिए एक आवश्यकता है? यदि नहीं, तो आप मिसरा दिशानिर्देशों की एक प्रतिलिपि ले सकते हैं (आपके पास पहले से ही जेएसएफ हैं) और पीसीआर पैटर्न का उपयोग करके जिन्हें आप कार्यान्वित कर सकते हैं उसे जांचें। यदि यह एक आवश्यकता है, तो मैं आपको एक वाणिज्यिक उत्पाद में "निवेश" का सुझाव देता हूं जो एमआईएसआरए/जेएसएफ दिशानिर्देशों की जांच करता है और दोनों उपकरणों का उपयोग करता है।

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

+0

पैटर्न मिलान से परे नियमों के लिए आप [clang-tidy] में ढांचे का उपयोग कर सकते हैं (http: //clang.llvm .org/अतिरिक्त/बजना-tidy.html)। – legalize

+0

@johnwait एक विशिष्ट नियम सेट की आवश्यकता नहीं थी, लेकिन नियमों का एक औपचारिक सेट होना था (!) और यदि आपके पास नियम हैं तो आपके पास जांच करने का एक स्वचालित तरीका भी हो सकता है। अंत में हमने अपनी सूची लिखी और कोड समीक्षा की –

1

मैं जो कह सकता हूं उससे, दस्तावेज़ीकरण को देखकर, यह बहुत खुलासा दिखता है। http://cppcheck.sourceforge.net/manual.pdf

+2

डीटीएसकोड, धन्यवाद, लेकिन मैनुअल के पास "मिसरा" या "जेएसएफ" नियमों का कोई पूर्वनिर्धारित सेट नहीं है ... – osgx

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