2012-01-11 13 views
11

के लिए कोड सम्मेलनों की जांच के लिए स्वचालित उपकरण हम छात्रों को पाठ्यक्रम में अभ्यास जमा करते हैं जबकि उन्हें कुछ कोड सम्मेलनों का पालन करना होता है। उदाहरण के लिए, कार्य नाम camelCase में होना चाहिए। फंक्शन की लंबाई 50 लाइनों से अधिक नहीं होनी चाहिए (कार्य विभाजित करने के लिए काफी सरल हैं) मैं ऐसे टूल की तलाश में हूं जो स्वचालित रूप से सी/सी ++ (दोनों की आवश्यकता है) के लिए जांच कर सकें। यही है, मैं कुछ गलत होने पर उपकरण शिकायत करना चाहता हूं ताकि छात्र इसे ठीक कर सके। अभी तक मैं कुछ भी ठीक से फिट करने में असमर्थ रहा हूं। यदि चीज ओपन सोर्स है और आसानी से हमारी जरूरतों के लिए कॉन्फ़िगर किया जा सकता है जो ओ.के. होगा।सी/सी ++

+2

आपको सी ++ कोड में ऊंटकेस फ़ंक्शन नामों को लागू करने के लिए कोई टूल नहीं मिलने की संभावना है, क्योंकि प्रमुख शैली लोअरकेसिंग के साथ कम से कम deviants के साथ लोअरकेस_with_underscores है। आपकी सबसे अच्छी उम्मीद कुछ विन्यास योग्य है। –

+1

आप इसे स्वचालित रूप से क्यों करना चाहते हैं? आप कम से कम होमवर्क को मैन्युअल रूप से पढ़ और सही कर सकते हैं, यह आपका काम है। आप शैली को माप नहीं सकते हैं। आप अनुपालन को माप सकते हैं, लेकिन यह कुछ अलग है। – wildplasser

+3

हम अनुपालन को माप रहे हैं। हम इसे स्वचालित रूप से करना चाहते हैं ताकि जब किसी छात्र को उन मुद्दों में से किसी एक पर गलती हो, तो उसे ठीक करने के लिए एक स्वचालित ईमेल प्राप्त हो सकता है और मानव चेकर का समय अधिक गंभीर व्यवसाय के लिए छोड़ सकता है। – Shiroko

उत्तर

2

आप यूनिक्स उपकरण indent से बल कुछ सी कोडिंग शैली का उपयोग कर सकते हैं।

man 1 indent

देखें जब यह स्थापित किया गया है।

+0

और परिणामों को मूल के साथ एक diff के माध्यम से चलाएं ... –

+0

इंडेंट फ़ंक्शन की अधिकतम संख्याओं को "बल" नहीं दे सकता है और लाइन ब्रेक से जुड़े किसी भी नियम diff आउटपुट को नष्ट कर देगा ... – log0

0

AFAIK विजुअल स्टूडियो प्रीमियम और परम के पास ऐसे उन्नत विकल्प ट्रॉफ विश्लेषण और परीक्षण उपकरण हैं। लेकिन उन स्वतंत्र नहीं हैं :(

+0

हाँ, लेकिन दुर्भाग्य से यह हमारे मामले के लिए उपयोगी नहीं है। – Shiroko

+0

/विश्लेषण स्थिर कोड विश्लेषण करता है। स्टाइल सम्मेलनों के साथ इसका कोई लेना-देना नहीं है। – pmr

0

Doxygen XML आउटपुट जो कार्रवाई करने के लिए बहुत आसान पहचानकर्ता में शब्द सीमाओं की खोज कभी के रूप में कम से कम के रूप में आसान होगा ... ठीक है, पैदा करता है।

0

आप डिबग में साफ उपयोग कर सकते हैं मोड, कुछ शेल/पर्ल स्क्रिप्ट्स के साथ।

असल में, विचार साफ चलने और आउटपुट को अन्य .txt फ़ाइल में प्रदान करने के लिए है, जिसे केवल त्रुटि आउटपुट प्रदान करने के लिए पार्स किया जा सकता है और आप इसे प्राप्त कर सकते हैं कोड की मूल रेखाएं और एक डीआईएफएफ चलाएं :-)

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

नहीं तो आप कोशिश करते हैं और इन का उपयोग कर सकते हैं:

http://gcgreatcode.sourceforge.net/ 
http://universalindent.sourceforge.net/ 

यह पता कुछ हद तक समस्या के साथ, अपने विशिष्ट स्वचालित जाँच करने के लिए कोडिंग का एक सा के साथ मदद कर सकता है।

1

इन उपकरणों में से एक, अनुकूलन की एक न्यूनतम के साथ, काम करेगा:

सी ++ के लिए

निर्देशयोग्य सत्यापन और विश्लेषण उपकरण: https://bitbucket.org/verateam/vera/wiki/Home
गूगल सी ++ आदर्श चेकर: http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py
epita विश्वविद्यालय नॉर्म परीक्षक (छात्र परियोजना): http://code.google.com/p/norme-checker/source/browse/

0

कुछ हद तक विस्तार और परिशुद्धता के स्तर और निवेश करने की इच्छा (या तो इसे स्वयं करने के लिए या किसी को भुगतान करने के लिए समय) के आधार पर, आप clang देख सकते हैं: यह एक सी, सी ++ है , और ऑब्जेक्ट-सी सह mpiler लिखित सी ++ जो इसके आंतरिक डेटा संरचनाओं का खुलासा करता है। मैंने विभिन्न ब्लंडर के लिए कोड की जांच करने के लिए प्लग-इन का उपयोग किया है, ज्यादातर छोटे, नाइटपिकिंग चीजें, हालांकि। चूंकि संकलक एक एएसटी का खुलासा करता है, उदाहरण के लिए, सी-स्टाइल कास्ट पाए जाने पर चेतावनियों को थूकना मुश्किल होता है (यह सी कोड पर थोड़ा शोर हो सकता है)।

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

एक बात है, हालांकि: ऐसा नहीं किसी भी सी ++ प्रोग्रामर नहीं केमलकेस प्रयोग करने के लिए नीचे निशान! यहां IASASimpleAndIpresspressExampleOfWhyUseOfCamelCaseIsReallyBad: you_have_a_much_easier_time_to_read_this! सी ++ प्रोग्रामर सही चीज करते हैं। इस प्रकार, कैमलकेस और हंगेरियन नोटेशन जैसे मूर्ख घृणित उपयोग नहीं किए गए हैं।

1

QA-CPP यहां सहायता कर सकता है। यह एक साल से अधिक हो गया है क्योंकि मैंने इसका इस्तेमाल किया था लेकिन आप इसे इस तरह की चीज करने के लिए कॉन्फ़िगर कर सकते हैं।

आप प्रोग्रामिंग रिसर्च में लोगों को एक कॉल देना चाहते हैं और जांच सकते हैं कि आप ऐसा कर सकते हैं या नहीं।

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

+0

मेरे अनुभव में, असली दुनिया में, आपको कोडिंग मानकों का पालन करना होगा। – dangerousdave

+1

वह असली दुनिया में नहीं है, वह एक विश्वविद्यालय में काम करता है। –

1

संपादक कॉन्फिग है, ऐसा लगता है कि यह विभिन्न संपादकों में कोडिंग मानकों को लागू करने के लिए एक उपकरण बनने का लक्ष्य है। समर्थन और कार्यक्षमता सीमित हैं, लेकिन यह एक बहुत अच्छा विचार है। http://editorconfig.org/