क्या कोडिंग मानकों को निरंतर एकीकरण सर्वर द्वारा लागू किया जाना चाहिए?


14

स्थैतिक विश्लेषण उपकरण चलाने वाले निरंतर एकीकरण सर्वर (उदाहरण पीएमडी, स्टाइलकॉप / एफएक्सकॉप) द्वारा कोडिंग मानकों / शैली को लागू किया जाना चाहिए और यदि मानकों का पालन नहीं किया जाता है तो बिल्ड को विफल करना चाहिए? बिल्ड को विफल करने के लिए किस प्रकार के नियमों का उपयोग नहीं किया जाना चाहिए?

जवाबों:


11

एक कारण के लिए कोडिंग मानक होने चाहिए ... और गैर-अनुपालन की जांच होनी चाहिए।

हालांकि, सभी उल्लंघनों को त्रुटियों के रूप में नहीं माना जाना चाहिए - जैसे कि सभी संकलन उल्लंघन नहीं हैं। जहां आप रेखा खींचते हैं, वहां कंपनी और उपकरण का निर्णय होना चाहिए।

उदाहरण के लिए, MISRA अपने नियमों को आवश्यक और सलाहकार के रूप में परिभाषित करता है ... मेरा सुझाव है कि एडवाइजरी निर्माण को आगे बढ़ने की अनुमति देगा।


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

1
@ जियोर्जियो - मैं सहमत हूं (ज्यादातर) लेकिन पाया है कि चेतावनियों को रोकने के साथ बहुत उदार होना वास्तविक समस्याओं को छिपाने का एक नुस्खा हो सकता है ... इसलिए उपेक्षा की गई चेतावनियों को समय
एंड्रयू

5

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

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

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

बिल्ड ब्रेक बनाने के बजाय, आप उपकरण चला सकते थे और उन्हें रिपोर्ट बना सकते थे। यदि कोडिंग मानक उल्लंघन बढ़ रहे हैं, तो आप टीम को एक साथ ला सकते हैं और यह पता लगा सकते हैं कि ऐसा क्यों हो रहा है।


2

स्थैतिक विश्लेषण उपकरण चलाने वाले निरंतर एकीकरण सर्वर (उदाहरण पीएमडी, स्टाइलकॉप / एफएक्सकॉप) द्वारा कोडिंग मानकों / शैली को लागू किया जाना चाहिए और यदि मानकों का पालन नहीं किया जाता है तो बिल्ड को विफल करना चाहिए?

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

बिल्ड को विफल करने के लिए किस प्रकार के नियमों का उपयोग नहीं किया जाना चाहिए?

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

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


2

एक सॉफ्टवेयर गुणवत्ता सुधार योजना के भाग के रूप में हमने हाल ही में अपनी निर्माण प्रक्रिया में एकीकृत करने के लिए कोड स्नफ़ की एक श्रृंखला को कोडित किया है।

हम एक बहुत अधिक निर्माण करते हैं, एक PHP अनुप्रयोग होने के नाते कोई वास्तविक संकलन नहीं है इसलिए निर्माण वास्तव में एक इकाई परीक्षण / स्थैतिक विश्लेषण / धावक है, और हम इस पर कुछ चक्र खर्च कर सकते हैं।

हमारे पास कुछ कोड गुणवत्ता के मुद्दे थे, और कुछ मुद्दों के साथ कुछ विरासत कोड थे।

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

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

तो मैं यह कहूंगा (कठिन अनुभव से सीखा)।

सुनिश्चित करें कि आपके कोड आधार का मानक उस मानक के काफी करीब है जिसे आप लागू करते हैं कि आपको तुरंत कोड के सुधार संस्करणों के लिए देव की आवश्यकता नहीं है। या .. आप प्रयास में वृद्धि के लिए तैयार हैं और उम्मीद कर रहे हैं।

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

जब मैंने कहा कि चेतावनियां 'ज्यादातर' व्यर्थ हैं, तो अब हम उन्हें रिकॉर्डिंग के आँकड़ों के लिए उपयोग करते हैं जो हमें केपीआई को मापने की अनुमति देते हैं जो कि सुधार दिखाते रहना चाहिए।

जब हम कोड सूँघने को फिर से लागू करते हैं, तो हम प्रकाश शुरू कर देंगे, और एक बार में कुछ सूँघों का परिचय देंगे जब तक कि हम मानक लागू नहीं हो जाते।


बिल्कुल सही। यदि यह मानकों के अनुपालन के लिए अपने बेकार को नहीं तोड़ता है।
एंडी

1

यह आपके अंतिम लक्ष्य और रणनीति पर निर्भर करेगा ।

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

हालाँकि, यह एक कमिट को ब्लॉक करने के लिए पूरी तरह से वैध है यदि कोड (वास्तव में परिवर्तन-सेट) में निर्भरता के मुद्दे हैं या संकलन नहीं है। हालाँकि, कोड लेआउट और कुछ नामकरण सम्मेलन के कारण कोड विफल होना बहुत गंभीर हो सकता है और CI सर्वर प्रतिबद्ध नियमों के लिए महत्वपूर्ण प्रतिबंध नहीं है।

लेकिन शाम के निर्माण के दौरान इसे लागू करने में सहायक नियम होने की बहुत संभावना है।

इसके अलावा, री-फैक्टरिंग उपकरण मानकों को लागू करने और सीखने में सहायता कर सकते हैं - जैसे कि डेवलपर्स द्वारा Resharper या JustCode उपयोग।


मैं असहमत हूं। यह एक मानक नहीं होगा यदि इसका निर्माण सर्वर द्वारा लागू नहीं किया जाता है, खासकर एक बड़ी टीम में। इसके अतिरिक्त, किसी को भी बिल्ड सर्वर के लिए इंतजार नहीं करना चाहिए, वही चेक जो उन्हें करने से पहले देवों द्वारा चलाने योग्य होना चाहिए।
एंडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.