
एक बार एक
गैर-बेवकूफ लेख में, एक
गैर-बेवकूफ हैब्राइज़र ने एक
गैर-बेवकूफ विचार बताया। इसका सार यह था कि उनकी कंपनी ने एक प्रणाली स्थापित की, जो प्रोग्रामर द्वारा लिखे गए कोड को रिपॉजिटरी में जोड़ने की कोशिश के समय नियंत्रित करती है और उस कोड को अस्वीकार करती है जो कुछ मानदंडों के अनुसार नहीं होता है। मुझे यह विचार पसंद आया। मैंने (3 और लोगों ने) लेखक को एक विचार विकसित करने और इसके बारे में एक लेख लिखने के लिए कहा, लेकिन यह कभी सामने नहीं आया। और मैंने खुद इसका पता लगाने का फैसला किया।
प्रस्तावना
शुरुआत में मैं समझाऊंगा कि मुझे इस विचार से इतना मोह क्यों था। अपनी सभी सादगी के साथ, यह फायदे का एक पूरा गुच्छा देता है:
- श्रेणीबद्ध कोड गुणवत्ता आवश्यकताएँ
यह कंपाइलर की त्रुटियों और त्रुटियों, सहकर्मियों की सलाह, कोड विश्लेषण टूल के निष्कर्षों से मुख्य अंतर है - आप उन पर थूक सकते हैं और उन पर कोई भी बकवास लिख सकते हैं। और यहाँ प्रोग्रामर बस बुरा कोड नहीं कर सकता। इसी समय, उसके पास धोखा देने का कोई मौका नहीं है, "क्या होगा अगर कोई नोटिस नहीं करता है" के लिए कोई उम्मीद नहीं है, बॉस पर कोई गुस्सा नहीं है जो फिर भी देखा और मॉनिटर में अपना चेहरा डाला। रोबोट के साथ बहस करना टीवी पर बात करने जैसा है। - आलसी प्रोग्रामर आखिरकार कंपनी के कोडिंग समझौते को पढ़ेंगे
आखिरकार, किसी कारण से वे किसी कारण के लिए लिखे गए थे! और यह एक बात है जब "पढ़ा, कृपया, और छड़ी करने के लिए" और एक और जब "और अंजीर आप यहाँ काम कर सकते हैं अगर आप पढ़ा नहीं है और छड़ी नहीं करेंगे" - ईमानदार प्रोग्रामर्स को आखिरकार कोडिंग कन्वेंशन याद नहीं करना पड़ेगा
यह एक दस्तावेज है जो समझ से बाहर है, जो समझ से बाहर है, कब, और यह स्पष्ट नहीं है कि उसने अधिक क्यों लिखा है; यदि आप कुछ गलत लिखते हैं, तो आपको स्वचालित रूप से इस बारे में सूचित किया जाएगा। कूल। - वरिष्ठ और जूनियर प्रोग्रामर के संवादों का एक हिस्सा "वास्या, तुम मूर्ख हो, मैंने तुमसे कहा था कि यहां इस तरह लिखना, गायब हो जाना ..."
बिल्कुल नहीं, लेकिन हिस्सा गायब हो गया। यह रोबोट को बताएगा। - चक्र गायब हो जाते हैं: "वास्या ने दशमलव बिंदु के बाद एक स्थान रखा -> पेट्या को हटा दिया -> वस्या डाल दिया -> पेट्या को हटा दिया ... पेट्या और वस्या ने एक दूसरे के चेहरे भर दिए"
कम संघर्ष का मतलब है स्वस्थ नसों। रोबोट को बंद करना व्यर्थ है। - टिप्पणियाँ कोड में सही स्थानों पर दिखाई देती हैं
सिर्फ इसलिए कि आप रिपॉजिटरी में एक वर्ग, इंटरफ़ेस या विधि को स्वीकार करने से इनकार कर सकते हैं, जिसके पहले एक टिप्पणी नहीं लिखी गई है। - वरिष्ठ प्रोग्रामर को उतारना
कुछ मामलों में, कनिष्ठ प्रोग्रामर को प्रश्न का उत्तर "मुझे कैसे लिखना चाहिए: इस तरह से या उस पर?" स्वचालित प्रणाली से, वरिष्ठ कॉमरेडों को वारक्राफ्ट के अधिक महत्वपूर्ण मामलों से विचलित किए बिना।
कार्यान्वयन
मैंने पहले से ही सोचा था कि मुझे अपनी बाइक को बाड़ देना होगा। कुछ भी नहीं। हमारे सामने सबकुछ पहले से ही चोरी है।
मिलिए
SVNStyleCop सेपेशेवरों : 5 मिनट में स्थापना, स्थिर संचालन, विन्यास लचीलापन।
विपक्ष : केवल Windows और केवल C # (शायद अन्य भाषाओं और प्लेटफार्मों के लिए समाधान हैं, लेकिन चूंकि Windows और C # केवल मेरा विकल्प है, मैंने आगे खुदाई नहीं की)।
स्थापना
1.
संग्रह डाउनलोड करें और इसे उस कंप्यूटर पर कहीं भी अनपैक करें जहां आपके पास एसवीएन सर्वर स्थापित है।
2. हम फ़ाइल SVNStyleCop.exe.config को सही करते हैं, इसमें svnlook.exe उपयोगिता का पथ लिखते हैं (यह SVN सर्वर के फ़ोल्डर में स्थित है)।
3. हम फ़ाइल SVNStyleCop.exe.config को सही करते हैं, इसमें लिखते हैं कि किन फ़ाइलों का विश्लेषण किया जाएगा। मैंने अभी लिखा है
< pathPatterns >
< clear />
< add value =".*\.cs$" />
</ pathPatterns >
4. हम SVNSettings.StyleCop फ़ाइल डालते हैं, पहले StyleCop उपयोगिता (कार्यक्रम ज्ञात है, मैं विस्तार से वर्णन नहीं करूंगा) कंपनी के कोड लेखन समझौतों के आधार पर SVNStyleCop में। यदि आपके पास ऐसे समझौते नहीं हैं, तो किसी को भी स्वीकार न करें।
शर्म करो और पश्चाताप करो! बैठो और करो। आप इसे स्वयं नहीं कर सकते - कुछ
स्मार्ट लोगों की कोशिश करें।
5. हुक को पूर्व-प्रतिबद्ध घटना पर सेट करें। SVN सर्वर विजुअल SVN में, यह SVNStyleCop डिलीवरी से "Pre प्रतिबद्ध हुक" सेक्शन में प्री-कमेटी.cmd फाइल की सामग्री को डालकर रिपॉजिटरी के संदर्भ मेनू से किया जाता है (इस फाइल में मान्य रास्तों को लिखना न भूलें!)।
6. हम कुछ मूर्खता करते हैं जो नियमों का उल्लंघन करते हैं, कुछ ऐसा करने की कोशिश करते हैं और देखते हैं

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