2010-08-24 8 views
5

पर आधारित TFS बिल्ड को कैसे विफल करें हम वर्तमान में स्रोत नियंत्रण और निरंतर एकीकरण के लिए TFS 2008 का उपयोग कर रहे हैं।FXCop चेतावनी

हम प्रदर्शन और सुरक्षा चेतावनियों की जांच के लिए FXCop का उपयोग करते हैं। वास्तुकार या वरिष्ठ डेवलपर स्प्रिंट के अंत में या डिलीवरी से पहले एफएक्स पुलिस चलाता है।

हम इसे सीआई के हिस्से के रूप में चलाने के लिए चाहते हैं और यदि कोई चेतावनी है तो निर्माण में असफल रहें, ऐसा करने का सबसे अच्छा तरीका क्या है?

उत्तर

5

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

मैंने पोस्ट-बिल्ड ईवेंट बनाकर सबसे अधिक शुरू किया - FxCopCmd को कॉल करता है।

मेरे मामले में, मैं बस कोड का एक छोटा सा सबसेट, बिल्ट-इन नियमों, और भी कुछ कस्टम नियम (एक .dll में) के कुछ

मैं इस के लिए एक .fxcop परियोजना फ़ाइल का उपयोग किया चाहता था - यह सब ठीक है कि मैं जीयूआई के माध्यम से कैसे चाहता था और फिर पोस्ट-बिल्ड इवेंट में प्रोजेक्ट फ़ाइल में FxCopCmd को इंगित करता हूं।

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

आखिर में मेरे लिए सबसे अच्छा काम करने वाले ब्लॉग पोस्ट पर आधारित था, जिस पर मैंने ठोकर खाई थी।

मैंने दो नई घटनाओं में जोड़ने के लिए प्रोजेक्ट फ़ाइल को संशोधित किया।

मैं FxCop के लिए कुछ अतिरिक्त पैरामीटर और सामान है, लेकिन यह का सार है:

  1. (निर्माण प्रक्रिया शुरू हो रहा है):

    1: <PropertyGroup> 
        2: <FxCopResults>$(ProjectDir)obj\$(Configuration)\FxCopResults.xml</FxCopResults> 
        3: <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /console /out:"$(ProjectDir)obj\$(ConfigurationName)\FxCopResults.xml"</PostBuildEvent> 
        4: </PropertyGroup> 
        5: <Target Name="BeforeBuild"> 
        6: <Delete Files="$(FxCopResults)" ContinueOnError="true" /> 
        7: </Target> 
        8: <Target Name="AfterBuild"> 
        9: <Error Text="One or more FxCop warnings occurred." Condition="Exists('$(FxCopResults)')" /> 
        10: </Target> 
    

    सामान्य प्रवाह इस तरह है

  2. निर्माण शुरू होने से पहले, पिछले FxCop परिणाम (यदि वे मौजूद हैं) साफ़ कर दिए गए हैं।
  3. पूर्व बिल्ड घटना
  4. शुरू हो रहा है
  5. (BUILD शुरू होता है)
  6. पोस्ट-बिल्ड ईवेंट ट्रिगर (जो FxCopCmd चलता है)
  7. खत्म पोस्ट-बिल्ड के बाद, अगर वहाँ FxCop परिणाम हैं, एक त्रुटि उठाया है। उदाहरण के लिए - - अगर FxCop विश्लेषण उत्पन्न
  8. , (BUILD प्रक्रिया के पूरा होने)

अब 4 नियम के उल्लंघन, अपने निर्माण 4 चेतावनी और 1 त्रुटि उत्पन्न होगा।

मुझे उम्मीद है कि इससे मदद मिलती है।

6

आप code analysis features within Visual Studio पर एक नज़र डाल सकते हैं, जो निरंतर एकीकरण वातावरण में उपयोग के लिए समर्थित है।

+0

क्या यह केवल वीएस के प्रीमियम या अल्टीमेट संस्करणों पर लागू नहीं होगा? –

+0

[... कोड स्टूडियो प्रीमियम या विजुअल स्टूडियो अल्टीमेट से कोड विश्लेषण ... (http://msdn.microsoft.com/en-us/library/3z0aeatx%28v=vs.100%29.aspx) –

3

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

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

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