2010-03-17 23 views
12

हमारे पास लगभग 20 परियोजनाओं (.csproj) के साथ 3 साल का समाधान (.sln) है। FxCop और/या StyleCop का उपयोग शुरू करना उचित है? शायद हमें इसे कई छोटी परियोजनाओं के लिए उपयोग करना चाहिए, लेकिन पूरे समाधान के लिए नहीं?क्या हमें परिपक्व प्रोजेक्ट में FxCop और/या StyleCop का उपयोग शुरू करना चाहिए?

कुछ अनुभवी उत्तरों को देखना अच्छा होगा।

धन्यवाद।

संपादित करें: हम निरंतर एकीकरण के लिए टीमसिटी का उपयोग कर रहे हैं। और हमारे पास रीशेपर का उपयोग करने की कोई संभावना नहीं है। :(CodeRushXpress केवल।

उत्तर

10

हाँ, आप होना चाहिए, लेकिन धीरे-धीरे।

ReSharper की एक प्रति जो नियम आप उपयोग करना चाहते हैं सेटअप जाओ, StyleCop स्थापित करते हैं, और ReSharper प्लगइन के लिए StyleCop मिलता है, और से तो आपके द्वारा खोले गए प्रत्येक फाइल पर आपको यह कहने के लिए विचित्र नीली रेखाएं मिलेंगी कि चीजें खराब हैं।

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

प्राप्त करें टिंग क्लीन कोड रीफैक्टरिंग की तरह है, यदि आप एक पूरे प्रोजेक्ट पर एक बार में कोशिश करते हैं और करते हैं, तो आप एक अचार में खत्म होने जा रहे हैं :)

+0

मैं पूरी तरह से सहमत हूं। – Steven

+0

हाँ, उन्हें जोड़ना आपको कुछ समय तक मार देगा - यह कई मुद्दों को दिखाएगा। – TomTom

+0

ReSharper का उपयोग करने की कोई संभावना नहीं है। :(StyleCop का उपयोग करने के किसी भी अन्य तरीके? CodeRushXPress के माध्यम से? और FxCop के बारे में क्या? –

0

इस पर निर्भर करता है कि समाधान कैसे एकीकरण बनाया गया था (और रिपोर्ट की गई समस्याओं को ठीक करना इन औजारों में) बहुत समय लग सकता है, इसलिए मुझे लगता है कि परियोजनाओं का एकीकरण एक-एक तरीका है जिस तरह आपको जाना चाहिए।

संपादित:

एड वुडकॉक के जवाब के अलावा: आप SyleCop कॉन्फ़िगर कर सकते हैं (और मुझे यकीन है FxCop भी) स्वचालित रूप से निर्माण वी.एस. प्रत्येक के दौरान उनकी जांच की जाए। इस सुविधा का उपयोग करके आप अपनी सभी परियोजनाओं पर एक-एक करके चेक चालू कर सकते हैं और अपने नियमित विकास के दौरान सभी चेतावनियों को ठीक कर सकते हैं (आप इन उपकरणों को त्रुटियों को उत्पन्न करने के लिए भी कॉन्फ़िगर कर सकते हैं)।

+0

हमारे पास निरंतर एकीकरण के लिए टीमसिटी है। शायद मुझे अपने प्रश्न में उल्लेख करना चाहिए। –

2

मैंने अपनी निजी परियोजनाओं पर स्टाइलकॉप का उपयोग करना शुरू कर दिया है और उठाए गए "मुद्दों" के माध्यम से काम करने में थोड़ा समय लगता है।

मैं आपकी फ़ाइलों के नमूने पर स्टाइलकॉप चलाने और किसी भी बदलाव करने के लिए लॉन्च करने से पहले परिणामों का विश्लेषण करने की अनुशंसा करता हूं।

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

स्टाइलकॉप की सेटिंग्स में आवश्यक समायोजन करने के बाद और फिर इसे अपने कोड बेस पर छोड़ दें - एक समय में एक प्रोजेक्ट।

+0

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

+0

@Vasiliy - मुझे पता है कि आप फ़ाइल पर राइट क्लिक कर सकते हैं और केवल उस फ़ाइल पर स्टाइलकॉप को संदर्भ मेनू से चला सकते हैं। क्या आप एक परियोजना पर राइट क्लिक करके ऐसा कर सकते हैं? (मुझे इस पीसी पर स्टाइलकॉप स्थापित करने के लिए इंस्टॉल नहीं किया गया है)। – ChrisF

+0

बस स्टाइलकॉप स्थापित किया गया। हां, फ़ाइल या प्रोजेक्ट पर चलना संभव है। –

1

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

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

अंत में, आप उचित सुधारों को लागू करने या चुनिंदा नियमों को चुनने के द्वारा सभी संदेशों को हल कर देंगे।

एक नियम के रूप में (कोई इरादा नहीं है) मैं सुरक्षा और प्रदर्शन समूहों को शुरू करने के लिए अच्छा मानता हूं। नामकरण नियम व्यक्तिपरक हैं, और आपके अपने सम्मेलनों से संघर्ष कर सकते हैं। यदि ऐसा है तो उन्हें बंद कर दें। गतिशीलता और वैश्वीकरण भी व्यक्तिपरक हैं, और आपकी आवश्यकताओं पर निर्भर करते हैं। बाकी के लिए, ठीक है, आप अपने स्वयं के निष्कर्ष बनाते हैं!

+0

वास्तव में सहायक उत्तर। धन्यवाद। –

3

FxCop/StyleCop के लिए एक वैकल्पिक या अच्छा पूरक वाणिज्यिक उपकरण NDepend का उपयोग करना होगा। इस उपकरण के साथ कोई भी LINQ क्वेरीज़(namely CQLinq) पर कोड नियम लिख सकता है। अस्वीकरण: मैं उपकरण

200 code rules से अधिक के डेवलपर्स से एक डिफ़ॉल्ट रूप से प्रस्ताव है हूँ, इन डिजाइन, वास्तुकला, कोड गुणवत्ता, कोड विकास, नामकरण सम्मेलनों में शामिल हैं, मृत कोड, नेट Fx उपयोग ...

CQLinq कोड नियम है कि हो सकता है लिखने के लिए समर्पित है verified live in Visual Studio, या यह verified during build process and reported in an HTML/javascript report हो सकता है।

FxCop या StyleCop से अधिक CQLinq की ताकत, कि यह एक कोड नियम लिखते हैं, और मिल तुरंत परिणाम के लिए सीधा है है। मिलान कोड तत्व ब्राउज़ करने के लिए सुविधाएं प्रस्तावित हैं। वस्तुतः यह है कि जैसा दिखता है:

CQLinq code rule

0

यह निर्भर करता है:

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

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

+0

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

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

  • कोई संबंधित समस्या नहीं^_^